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

Unity3D C#跨脚本获取公共变量值异常问题求助

问题原因分析

你遇到的核心问题是组件类型不匹配,导致无法正确获取到gameController脚本里的winColor变量:

在tile.cs的Start()方法中,你写了:

winingColor = GameObject.Find("gameController").GetComponent<gamePlay>().winColor;

但你的控制脚本文件名是gameController.cs,对应的类名应该是gameController(Unity要求脚本文件名和类名必须完全一致,否则无法正常挂载和调用),而你这里获取的是gamePlay类型的组件——这个组件根本不存在于目标物体上,所以GetComponent会返回null,访问null的winColor就会得到Color的默认值:RGBA(0.000, 0.000, 0.000, 0.000)。

另外还有两个潜在的小风险需要排查:

  • 确认场景中目标物体的名称确实是gameController,没有拼写错误(大小写、多字少字);
  • 确认该物体上确实挂载了gameController.cs脚本,没有挂错其他脚本。
解决方法

1. 修正组件类型(最直接的修复)

把tile.cs里的组件获取代码改成正确的gameController类型:

private Color winingColor;
void Start () {
    // 将gamePlay改为gameController,匹配你的脚本类名
    winingColor = GameObject.Find("gameController").GetComponent<gameController>().winColor;
    Debug.Log(winingColor);
}

这样就能正确获取到gameController脚本里赋值后的winColor了。

2. 更可靠的优化方案(推荐)

使用单例模式来获取gameController实例,避免GameObject.Find带来的性能开销和名称拼写错误问题:

首先在gameController.cs中添加单例逻辑:

public GameObject ball;
public List<GameObject> tiles;
private Color [] colors = { new Color(0,1,0,1), new Color(1,0,0,1), new Color(1,1,1,1), new Color(0,0,1,1), new Color(1,1,0,1), new Color(0, 0, 0, 1)};
public Color winColor;
// 添加单例实例
public static gameController Instance;

void Awake () {
    // 在Awake中初始化单例,比Start更早执行,避免时序问题
    Instance = this;
}

void Start () {
    winColor = colors[1];
    Debug.Log("con wincolor:" + winColor);
    ball.GetComponent<SpriteRenderer>().color = colors[1];
    tiles[0].GetComponent<SpriteRenderer>().color = colors[0];
    tiles[1].GetComponent<SpriteRenderer>().color = colors[1];
    tiles[2].GetComponent<SpriteRenderer>().color = colors[3];
    tiles[3].GetComponent<SpriteRenderer>().color = colors[4];
}

然后在tile.cs中直接通过单例获取winColor:

private Color winingColor;
void Start () {
    winingColor = gameController.Instance.winColor;
    Debug.Log(winingColor);
}

这种方式不仅更高效,还能避免因物体名称修改导致的错误,是Unity中获取全局控制器的常用方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:56:25