gpt4 book ai didi

unity3d - 为什么 SpriteRenderer 颜色在运行时没有更新?

转载 作者:行者123 更新时间:2023-12-04 17:55:50 46 4
gpt4 key购买 nike

我有一个 GameObjectSpriteRenderer并且它的默认颜色设置为白色。在运行时,我将颜色设置为 Color.gray并且由于某种原因它没有在运行时更新到新的 gray着色。我已经确认脚本中的对象是正确的,因为如果我设置 enabled, Sprite 就会完全消失。为假,如果我在编辑器中选择了对象并播放,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 完全相同的项目不包含问题。

Sample Projects

最佳答案

只需为可能想要这个问题的答案的人更新。
在 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;
}
}

关于unity3d - 为什么 SpriteRenderer 颜色在运行时没有更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40502423/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com