关于unity:Unity-游戏黑暗之光笔记第四章-任务系统的实现

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();
    }

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理