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