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

Unity多GameObject显示控制求助:仅在一个区域随机显示0

问题修正方案

原代码核心问题

  • 未按区域分组管理数字对象,无法精准控制单个区域的数字显示逻辑
  • 遍历checkfirst的逻辑与需求无关,混淆了区域判断逻辑
  • 单独处理firstziro的方式不符合“每个区域自带0对象”的设定

修正思路

  1. 按区域分组管理数字对象,用嵌套列表对应每个区域的3个数字GameObject(建议将0的对象放在子列表索引0位置)
  2. 随机选中一个区域,仅在该区域显示0
  3. 其余区域随机激活一个非0数字对象
  4. 确保每个区域仅显示一个数字,其余全部隐藏

修正后代码

// 按区域分组的数字对象:每个子列表对应一个区域的3个数字(索引0为0的GameObject)
[SerializeField] private List<List<GameObject>> areaNumberObjects = new List<List<GameObject>>();

void Start()
{
    // 随机选一个要显示0的区域
    int zeroAreaIndex = UnityEngine.Random.Range(0, areaNumberObjects.Count);

    // 遍历处理每个区域
    foreach (var currentArea in areaNumberObjects)
    {
        // 先隐藏当前区域所有数字
        foreach (GameObject numObj in currentArea)
        {
            numObj.SetActive(false);
        }
    }

    // 给选中的区域激活0
    areaNumberObjects[zeroAreaIndex][0].SetActive(true);

    // 给其余区域随机激活非0数字
    for (int i = 0; i < areaNumberObjects.Count; i++)
    {
        if (i == zeroAreaIndex) continue;
        int randomNonZeroIdx = UnityEngine.Random.Range(1, areaNumberObjects[i].Count);
        areaNumberObjects[i][randomNonZeroIdx].SetActive(true);
    }
}

配置说明

  • 在Unity Inspector中,给areaNumberObjects添加5个元素(对应5个区域)
  • 每个子列表依次添加3个数字GameObject:第一个拖入0的对象,剩余两个拖入非0数字对象

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:10:48