【发布时间】:2018-03-21 03:10:02
【问题描述】:
我想以随机顺序更改 UI 图像。我在 UI(canvas) 中有一个包含 Image 组件 的游戏对象,它最初有 null image。我附加了一个脚本(游戏对象)来在运行时更改图像。
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class changeImg : MonoBehaviour {
public Sprite sprite1;
public Sprite sprite2;
public Sprite sprite3;
void Start()
{
ChangeImg();
}
void ChangeImg()
{
int rand=Random.Range(0,3);
if(rand==0)
{
gameObject.GetComponent<Image> ().sprite = sprite1;
//gameObject.GetComponent<UnityEngine.UI.Image> ().sprite = sprite1;
}
else if(rand==1)
{
gameObject.GetComponent<Image> ().sprite = sprite2;
// gameObject.GetComponent<UnityEngine.UI.Image> ().sprite = sprite2;
}
else if(rand==2)
{
gameObject.GetComponent<Image> ().sprite = sprite3;
//gameObject.GetComponent<UnityEngine.UI.Image> ().sprite = sprite3;
}
}
}
我已经在检查器中分配了公共字段 (sprite1,sprite2,sprite3)。正如我在代码中评论的那样,我尝试了这两个选项。我没有收到错误,但图像也没有按照我的意愿进行更改。 在程序运行期间,GameObject(脚本所附加的)最初的图像源为空。
【问题讨论】:
-
您的代码对我有用。请提供对象检查器的屏幕截图,以便我清楚地了解发生了什么。
-
是的,它也适用于我。你确定你已经在检查器中为这三个精灵分配了一个值吗?
-
或者你确定附上了脚本?如果该对象上没有 Image,您将得到一个空引用异常,如果没有错误,则可能没有运行任何代码。进行调试检查。
-
您是否尝试过附加调试器来查看精灵字段的值?