Unity 游戏黑暗之光笔记第四章 任务系统的实现

Posted 0qqppyvt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();
    }

以上是关于Unity 游戏黑暗之光笔记第四章 任务系统的实现的主要内容,如果未能解决你的问题,请参考以下文章

Unity 游戏黑暗之光笔记第一章 完善场景

Unity3D实战RPG黑暗之光:游戏分解及各系统的实现

Unity3D实战RPG黑暗之光Scene3:创建游戏运行场景及角色控制

Unity初探之黑暗之光

unity初探之黑暗之光

Unity3D实战RPG黑暗之光Scene2:创建角色选择场景