在 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 步:测试你的游戏

运行您的游戏并测试交互。当您单击或触摸指定对象时,文本应该出现。

推荐文章
在 Unity 中实现对象池
在 Unity 中创建子弹时间效果
在 Unity 中创建交互式对象
在 Unity 中实现动力学交互
在 Unity 中使用特定钥匙打开抽屉和橱柜
在 Unity 中添加玩家进入汽车
在 Unity 中使用运行时动画控制器