【问题标题】:How to have an image show up if a condition is met in Unity如果在 Unity 中满足条件,如何显示图像
【发布时间】:2016-01-16 23:38:39
【问题描述】:

我有三个变量

无,团队A,团队B

我只是在进行一些调试,并希望显示一个图像,具体取决于所选的图像。

用于选择人群的代码。

public enum crowdOptions {None, TeamA, TeamB};
public static crowdOptions CrowdOptions;

        if(Random.value < .33){
            CrowdOptions = crowdOptions.None;
        } else if (Random.value > .66){
            CrowdOptions = crowdOptions.TeamA;
        } else {
            CrowdOptions = crowdOptions.TeamB;
        }

我知道我需要将其添加到 CrowdOptions 下方,但我不确定代码是什么或如何将其连接到图像。

我制作了带有颜色的 UI 图像框;无 = 白色,A 队 = 红色,B 队 = 蓝色。

这就是答案。我需要关闭游戏对象:

        if(Random.value < .33){
            CrowdOptions = crowdOptions.None;
            GameObject.Find("None").GetComponent<Image>().enabled =true;
            GameObject.Find("TeamA").GetComponent<Image>().enabled =false;
            GameObject.Find("TeamB").GetComponent<Image>().enabled =false;
        } else if (Random.value > .66){
            CrowdOptions = crowdOptions.TeamA;
            GameObject.Find("None").GetComponent<Image>().enabled =false;
            GameObject.Find("TeamA").GetComponent<Image>().enabled =true;
            GameObject.Find("TeamB").GetComponent<Image>().enabled =false;
        } else {
            CrowdOptions = crowdOptions.TeamB;
            GameObject.Find("TeamNone").GetComponent<Image>().enabled =false;
            GameObject.Find("TeamA").GetComponent<Image>().enabled =false;
            GameObject.Find("TeamB").GetComponent<Image>().enabled =true;
        }

那么游戏对象(图像)的名称是 None、TeamA、TeamB

【问题讨论】:

  • Tim,您最简单的方法就是“打开和关闭游戏对象”以使其中一个或另一个出现。但几乎不可能回答如此广泛的问题,什么是“图像”???你的意思是你在使用 UI 系统.. 还是什么?
  • 我完全按照你说的做了。我不得不考虑一下我会更新代码!
  • @TimCooley:您是否将问题的答案放入您的问题中?如果是这样,您能否从问题中取出答案部分并将其作为答案发布?这将适合 Stack Overflow 的结构。

标签: image user-interface unity3d


【解决方案1】:

Tim,您最简单的方法就是“打开和关闭游戏对象”以显示其中一个。

只需使用 SetActive 来执行此操作 - 阅读手册或 google 以获得 1000 秒长的教程。

我不知道我为什么要这样做,但这里有更多代码提示

1) 从三个中随机选择一个 INTEGER 并使用它,

2) 不要每次都随机调用! 选择一次并使用该值。这是一个非常基本的错误,可能会导致巨大的错误。

int r = Random.Range(0,3)
// means either 0,1 or 2
// READ MANUAL if you don't understand why

3) 当您必须像这样打开“一件事”时,更好的计划是全部关闭,然后打开一个。这是一种更可靠、更清晰的编程方式。

void TurnAllOff()
 {
 teamA ... disabled
 teamB ... disabled
 teamC ... disabled
 }

void TurnOnOneRandomItem()
 {
 int r = Random.Range(0,2)
 TurnAllOff()
 if ( r == 0 ) teamA .. enabled
 if ( r == 1 ) teamB .. enabled
 if ( r == 2 ) teamC .. enabled
 }

你明白了吗?

请注意现在变得多么容易,例如,以后添加新值,以及检查代码是否正确变得多么容易。

【讨论】:

    猜你喜欢
    • 2023-03-13
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 2019-01-15
    • 2021-04-28
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多