我有GameObject
SpriteRenderer
,其默认颜色设置为白色。在运行时,我将颜色设置为Color.gray
,并且由于某种原因,它不会在运行时更新为新的gray
色调。我已经确认我的脚本中的对象是正确的,因为如果我将enabled
设置为false并且如果我在编辑器中选择了对象并且播放时,精灵完全消失,则Inspector
中的颜色会发生变化但是不会在Game View
中更新。
这是我的简单剧本
public class GameManager : MonoBehaviour
{
public SpriteRenderer Player1;
public SpriteRenderer Player2;
public void SetTurn(bool isPlayer1)
{
this.Player1.color = Color.gray;
this.Player2.color = Color.gray;
if (isPlayer1)
this.Player1.color = Color.white;
else
this.Player2.color = Color.white;
}
}
SetTurn
是通过鼠标点击其Update
中的其他脚本调用的;我已经验证该功能实际上正在运行。我也尝试将其简化为:
public class GameManager : MonoBehaviour
{
public SpriteRenderer Player1;
public SpriteRenderer Player2;
private void Update()
{
this.Player1.color = Color.red;
}
}
这甚至不起作用。控制台中没有警告也没有错误。我尝试重新启动,重建,退出并重新启动,在不同的计算机上运行并在完全不同的平台上运行......没有任何作用。
知道我做错了什么吗?同样,颜色在运行时在Inspector
中更改,但在Game View
中没有。此外,如果我在运行时Inspector
手动更改颜色,Game View
确实会改变颜色,它只是拒绝从脚本中执行此操作。
修改
我也尝试使用Color32
来覆盖我的基础,这不起作用,正如我预期的那样。
更新
我完全删除了脚本并创建了一个新脚本,我直接将其附加到GameObject
本身,这甚至都不起作用。
public class test : MonoBehaviour
{
private SpriteRenderer m_Renderer;
void Start()
{
this.m_Renderer = this.GetComponent<SpriteRenderer>();
}
void Update()
{
this.m_Renderer.color = Color.black;
Debug.Log("COLOR BLACK");
}
}
控制台显示“COLOR BLACK”,因此我知道正在调用更新,但Game View
或Scene View
仍然没有颜色变化,但Inspector
更新2
我缩小了范围,但仍然没有解决它。我正在使用2d实验版5.5.0a6
。我安装了当前的稳定版本5.4.2f2
,问题不存在!因此,问题与版本SpriteRenderer
中的5.5.0a6
有关。我试图找出问题所在,我希望很快就能解决。
更新3 以下是2个简单项目的链接,用于说明问题。一个用于版本5.5.0a6,其中包含该问题,而版本5.4.2f2的完全相同的项目不包含该问题。
答案 0 :(得分:1)
仅更新可能需要此问题答案的人。 在Unity版本2019.1.12f1中。在编辑器中选择颜色后,我们必须再设置1个Alpha值
Click to see how to set Alpha value after select color 然后我们可以像下面这样正常使用代码:
public Color pink;
public Color purple;
void SetRandomColor() {
int ran = Random.Range(0, 1);
Debug.Log("RANDOM: " + ran);
switch (ran) {
case 0:
sr.color = pink;
break;
case 1:
sr.color = purple;
break;
}
}