在 Unity 中显示对象触摸上的文本
欢迎来到这个 Unity 教程,您将在其中学习如何在触摸游戏中的对象时显示文本。这种简单的交互可以为您的项目添加沉浸式元素。本教程适用于移动设备和桌面设备。
第 1 步:创建 Unity 项目
如果您还没有这样做,请首先打开 Unity 并创建一个 新 3D 项目。确保您已为您的首选开发环境安装了必要的资产。
第 2 步:导入 3D 对象
将 3D 对象 导入场景中,代表玩家将与之交互的项目。这可以是立方体、球体或任何其他适合您的游戏的物体。
第三步:添加碰撞体
将 碰撞器组件附加到您的 3D 对象。这将使其能够检测其他对象何时与其交互。常见的碰撞器类型包括盒子碰撞器、球体碰撞器或网格碰撞器,具体取决于对象的形状。
第 4 步:创建画布和文本
通过右键单击场景层次结构,选择 UI,然后选择 Canvas,创建 UI Canvas。在画布内,添加一个将显示您的消息的文本组件。
第5步:将画布设置为世界空间
将 Canvas 组件的渲染模式更改为 'World Space'。这允许画布存在于游戏的 3D 空间中。
第 6 步:放置画布
调整画布的位置,使其与 3D 对象对齐。这可确保触发时文本出现在对象附近。
第7步:编写脚本
编写一个 script 来检测玩家何时与对象交互。当交互发生时,激活画布并设置文本组件的内容。检查下面的示例脚本:
'ObjectInteraction.cs'
using UnityEngine;
using UnityEngine.UI;
public class ObjectInteraction : MonoBehaviour
{
public GameObject canvas;
public Text displayText;
private void Start()
{
canvas.SetActive(false);
}
private void Update()
{
// Use inline conditional to determine input position based on platform
Vector3 inputPosition = (Input.touchCount > 0) ? Input.GetTouch(0).position : (Vector3)Input.mousePosition;
// Raycast to determine if the touch or click hits the object
Ray ray = Camera.main.ScreenPointToRay(inputPosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit) && hit.collider.gameObject == gameObject)
{
// Activate the canvas and set the text
canvas.SetActive(true);
displayText.text = "Your message here!";
}
}
}
第 8 步:将脚本添加到对象
将 一个 C# 脚本附加到您的 3D 对象,它将处理交互逻辑并分配所有必要的变量。
第 9 步:测试你的游戏
运行您的游戏并测试交互。当您单击或触摸指定对象时,文本应该出现。