在NPC预制体中增加Canvas 并设置
创建Image 并设置
隐藏Image
在场景中创建Canvas 重命名为CurrentCanvas
创建空物体设置底端锚点 重命名为DownPin
创建Image重命名为TalkUI
选择图片设置
创建Image并设置 重命名为imgNpc
创建文本并设置 重命名为txtNpc 可以给图片与文本加一个outline描边组件增强效果
将做好的对话显示UI重命名为TalkUI01后放入预制体文件夹
最后设置预制体
在场景中删除
创建脚本并编写:AbleTalk.cs
using UnityEngine;
public class AbleTalk : MonoBehaviour{bool isG;int countG = 0;GameObject canTalk;GameObject uiPrefabInstance;GameObject uiPrefab;void Start(){canTalk = transform.Find("Canvas/Image").gameObject;uiPrefab = Resources.Load<GameObject>("Prefabs/TalkUIs/TalkUI01");}void OnTriggerEnter(Collider other){Debug.Log(1);if (other.CompareTag("Player")){Debug.Log(2);transform.Find("Canvas/Image").gameObject.SetActive(true);Debug.Log(3);isG = true;}}void OnTriggerExit(Collider other){if (other.CompareTag("Player")){transform.Find("Canvas/Image").gameObject.SetActive(false);isG = false;}}void Update(){if (canTalk.activeSelf && Input.GetKeyDown(KeyCode.G)){if (countG == 1)return;uiPrefabInstance = Instantiate(uiPrefab, new Vector3(0f, 215, 0f), Quaternion.identity);uiPrefabInstance.transform.SetParent(GameObject.Find("CurrentCanvas").transform, false);countG++;}if (isG == false)countG = 0;}
}
绑定脚本在NPC上 并在NPC对象上增加两个组件
调节NPC的碰撞器大小
设置主角的Tag标签为Player 并增加Collider组件
运行项目 - 当主角靠近NPC时
当按下G键时开启对话
end