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
相关产品推荐
相关产品推荐

