查看: 2779|回复: 1
打印 上一主题 下一主题

[其他] Unity3D控制鼠标隐藏

[复制链接]

2317

主题

54

听众

2万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
20645
精华
62

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2014-10-18 03:16:35 |只看该作者 |倒序浏览

今天学习的是控制鼠标指针的隐藏,相信大家都在看视频时发现,如果选择了全屏播放模式,过一会儿如果不移动鼠标的话,鼠标指针就会慢慢隐藏,便于大家欣赏大片

今天就带来一个脚本来实现这个功能。只要在场景中将如下脚本拖入任意游戏对象,运行场景,就可以看到效果了。

脚本如下:
using UnityEngine;
using System.Collections;


public class PointerManager : MonoBehaviour
{
    //定义一个鼠标状态的枚举
    public  enum PointerState
    {
        stateInvisible,
        stateVisible,
        stateSetInvisible,
        stateSetVisible
    }
   
    public PointerState pointerState = PointerState.stateSetInvisible;
    public float timeOutReset = 2f;




    private bool hideOverride = false;
    private float timeOutCounter;
    private Vector3 currentMousePosition;


    void Start()
    {
        //获得当前鼠标位置,以便判断是否移动了鼠标
        currentMousePosition = Input.mousePosition;
    }


    void Update()
    {
        switch (pointerState)
        {
            case PointerState.stateInvisible:
                if (!hideOverride)
                    //移动了鼠标,保持指针可见状态
                    if (Input.mousePosition != currentMousePosition)
                        pointerState = PointerState.stateSetVisible;
                break;
            case PointerState.stateVisible:
                //开始计时,如果鼠标长时间不动,则隐藏鼠标指针
                if (timeOutCounter > 0f)
                {
                    timeOutCounter -= Time.deltaTime;
                    Debug.Log(timeOutCounter);
                }
                else pointerState = PointerState.stateSetInvisible;
                break;
            case PointerState.stateSetInvisible:
                //隐藏鼠标指针
                Screen.showCursor = false;
                currentMousePosition = Input.mousePosition;
                //转换状态
                pointerState = PointerState.stateInvisible;
                break;
            case PointerState.stateSetVisible:
                //指针可见时,重新计时
                timeOutCounter = timeOutReset;
                Screen.showCursor = true;
                pointerState = PointerState.stateVisible;
                break;


        }
    }
}


分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

hyui    

1

主题

2

听众

6671

积分

高级设计师

Rank: 6Rank: 6

纳金币
2715
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2014-10-18 03:53:18 |只看该作者
Good to learn from code!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-18 20:43 , Processed in 0.309790 second(s), 31 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部