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

Unity中如何实现立方体随机传送至指定位置并优化变量设置?

Unity立方体随机传送的简化实现方案

不用给每个传送位置单独写变量,用数组就能轻松解决,代码简洁还方便扩展:

1. 替换单个变量为数组

把原来的pos1到pos10全部换成一个Transform数组,这样在Unity编辑器里可以直接批量拖入所有传送点:

public Transform cube; // 直接引用要传送的立方体
public Transform[] teleportPositions; // 存储所有传送位置的数组

2. 简化随机传送逻辑

不用写循环和switch,直接从数组里随机选一个位置赋值给立方体就行。这里加个按键触发,避免每一帧都乱跳:

void Update()
{
    // 按下空格键触发传送
    if (Input.GetKeyDown(KeyCode.Space))
    {
        // 先判断数组不为空,避免报错
        if (teleportPositions != null && teleportPositions.Length > 0)
        {
            // 生成数组范围内的随机索引(数组索引从0开始)
            int randomIndex = Random.Range(0, teleportPositions.Length);
            // 设置立方体位置为选中的传送点位置
            cube.position = teleportPositions[randomIndex].position;
        }
    }
}

额外提示

  • 在Unity编辑器里,选中挂载这个脚本的物体,找到teleportPositions,设置数组长度为你的传送点数量,然后把所有传送点的Transform拖进去就行,不用一个个命名变量。
  • 原来的代码问题:Random.Range(1,12)会生成1-11的数,但你只有10个传送点,会出现无对应位置的情况;循环套switch完全冗余,逻辑绕还容易出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 13:15:39