You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中点击不同3D立方体显示对应文本并停止旋转的问题求助

解决方案:Unity立方体点击显示对应文本并停止旋转

核心思路

让每个立方体通过独立的脚本实例控制自身状态(旋转、点击),绑定专属的文本对象/内容,避免共用全局变量导致的串味问题。

具体实现步骤

1. 准备UI文本(两种可选方案)

方案A:每个立方体对应独立文本
  • 在场景中创建Canvas,右键添加4个Text组件,命名为Cube1Text、Cube2Text、Cube3Text、Cube4Text。
  • 分别给每个Text输入对应立方体的文本内容,初始状态设置为隐藏(取消Inspector面板的Set Active勾选)。
方案B:单个全局文本显示不同内容
  • 在场景中创建Canvas,添加1个Text组件,命名为GlobalTipText,初始状态设置为隐藏。

2. 编写立方体控制脚本

创建C#脚本CubeClickHandler.cs,代码如下:

using UnityEngine;
using UnityEngine.UI;

public class CubeClickHandler : MonoBehaviour
{
    // 旋转速度,可在Inspector调整
    public float rotateSpeed = 20f;
    // 方案A:绑定当前立方体对应的专属文本对象
    public GameObject targetText;
    // 方案B:当前立方体要显示的文本内容
    public string cubeDisplayText;
    // 方案B:绑定全局文本对象
    public GameObject globalText;

    private bool isClicked = false;

    void Update()
    {
        // 未点击时保持旋转
        if (!isClicked)
        {
            transform.Rotate(Vector3.up, rotateSpeed * Time.deltaTime);
        }
    }

    // 鼠标点击立方体触发(需确保立方体有非触发器碰撞体)
    void OnMouseDown()
    {
        isClicked = true;
        
        // 执行方案A的逻辑(二选一)
        if (targetText != null)
        {
            targetText.SetActive(true);
        }

        // 执行方案B的逻辑(二选一,注释掉方案A代码即可)
        // if (globalText != null)
        // {
        //     globalText.GetComponent<Text>().text = cubeDisplayText;
        //     globalText.SetActive(true);
        // }
    }
}

3. 配置每个立方体

  • 给每个立方体添加Box Collider(确保Is Trigger未勾选,否则OnMouseDown无法触发)。
  • 将CubeClickHandler脚本分别拖到4个立方体上。
  • 根据选择的方案配置参数:
    • 方案A:每个立方体的targetText字段拖入对应的CubeXText对象。
    • 方案B:每个立方体的cubeDisplayText输入对应文本,globalText字段拖入GlobalTipText对象。

常见问题排查

  • 点击无反应:检查立方体是否有Box Collider,且Is Trigger未勾选;确保相机能看到立方体(OnMouseDown依赖射线检测)。
  • 文本显示混乱:检查每个脚本实例的参数是否绑定正确,避免多个立方体引用同一个文本对象;确认isClicked变量是实例变量(非静态),保证每个立方体独立控制状态。

内容的提问来源于stack exchange,提问作者Black11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 03:15:43