Unity 手游光明之光笔记
第四章 工作零碎的实现
留神要点
在把鼠标放在工作面板上点击时,为了让角色不挪动,在PlayerDir脚本的Update办法中的第一个if断定语句中增加一句,因为NGUI版本的起因应用上面一行代码

 if (Input.GetMouseButtonDown(0)&& UICamera.isOverUI==false)

NPCBar脚本

    public TweenPosition questTween;    public UILabel desLabel;    public GameObject acceptBtnGo;    public GameObject okBtnGo;    public GameObject cancelBtnGo;    public bool isInTask = false;//示意是否在工作中    public int killCount = 0;//示意工作进度,曾经杀死了几只小野狼    private PlayerStatus status;    void Start()    {        //查找办法,获取状态        status = GameObject.FindGameObjectWithTag(Tags.player).GetComponent<PlayerStatus>();    }    void OnMouseOver()    {//当鼠标位于这个collider之上的时候,会在每一帧调用这个办法        if (Input.GetMouseButtonDown(0))        {//当点击了老爷爷            if (isInTask)            {                ShowTaskProgress();            }            else            {                ShowTaskDes();            }            ShowQuest();        }    }    void ShowQuest()    {        questTween.gameObject.SetActive(true);        questTween.PlayForward();    }    void HideQuest()    {        questTween.PlayReverse();       // questTween.gameObject.SetActive(false);    }    void ShowTaskDes()    {        desLabel.text = "工作:\n杀死了10只狼\n\n处分:\n1000金币";        okBtnGo.SetActive(false);        acceptBtnGo.SetActive(true);        cancelBtnGo.SetActive(true);    }    void ShowTaskProgress()    {        desLabel.text = "工作:\n你曾经杀死了" + killCount + "\\10只狼\n\n处分:\n1000金币";        okBtnGo.SetActive(true);        acceptBtnGo.SetActive(false);        cancelBtnGo.SetActive(false);    }    //工作零碎 工作对话框上的按钮点击工夫的解决    public void OnCloseButtonClick()    {        HideQuest();    }    public void OnAcceptButtonClick()    {        ShowTaskProgress();        isInTask = true;//示意在工作中    }         public void OnOkButtonClick()    {        if (killCount >= 10)        {//实现工作            //取得金币            status.GetCoint(1000);            //数量归零            killCount = 0;            ShowTaskDes();        }        else        {            //没有实现工作            HideQuest();        }    }    public void OnCancelButtonClick()    {        HideQuest();    }

鼠标指针治理
创立GameSetting游戏物体加载CursorManager组件并且制订好指针图片

    public static CursorManager _instance;    public Texture2D cursor_normal;    public Texture2D cursor_npc_talk;    public Texture2D cursor_attack;    public Texture2D cursor_lockTarget;//锁定目标    public Texture2D cursor_pick;    //设置热点    private Vector2 hotspot = Vector2.zero;    //指针的类型,主动抉择鼠标软硬件的指针    private CursorMode mode = CursorMode.Auto;    //设置为单例模式    void Start()    {        _instance = this;    }    public void SetNormal()    {        Cursor.SetCursor(cursor_normal, hotspot, mode);    }    public void SetNpcTalk()    {        Cursor.SetCursor(cursor_npc_talk, hotspot, mode);    }

创立NPC脚本并且是NPCBar继承NPC

    //每一帧都要调用    private void OnMouseEnter()    {        CursorManager._instance.SetNpcTalk();    }    private void OnMouseExit()    {        CursorManager._instance.SetNormal();    }