c# - 无法将公共变量的值获取到 Unity3D c# 中的另一个脚本中
问题描述
我的脚本中有一个public Color winColor
var 。gameController.cs
我在Start()
. 现在我想在另一个脚本中获取它的值check.cs
。
现在我因为它是公开的,所以我使用GameObject.Find("gameController").GetComponent<gamePlay>().winColor;
了这里的问题是它显示了不同的值。这是我的代码tile.cs
private Color winingColor;
void Start ()
{
winingColor = GameObject.Find("gameController").GetComponent<gamePlay>().winColor;
Debug.Log(winingColor);
}
void Update ()
{
Vector2 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
bool overSprite = this.GetComponent<SpriteRenderer>().bounds.Contains(mousePosition);
if (overSprite)
{
if (Input.GetButton("Fire1"))
{
if (this.GetComponent<SpriteRenderer>().color == winingColor)
{
float x = this.gameObject.transform.position.x;
this.gameObject.transform.position = new Vector3(x, 3.5f, 0.0f);
}
}
}
}
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;
// Use this for initialization
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];
}
winColor
in的值gameController.cs
是RGBA(1.000, 0.000, 0.000, 1.000)
But in tile.cs
I am gettingRGBA(0.000, 0.000, 0.000, 0.000)
有什么想法吗?
解决方案
不同游戏对象的 Start() 以您意想不到的顺序发生。
如果 Tile.cs Start() 首先发生,则不会设置 winColor。
将此行移至 Awake()
winColor = colors[1];
解决此问题的另一种方法是,如果 winColor 不应该更改,您可以将 winColor 更改为 Property getter,然后删除该winColor = colors[1];
行。
public Color winColor { get { return colors[1];}}
推荐阅读
- java - 如何在netbeans平台的任务栏中显示登录页面
- jenkins - 使用 java 程序在 jenkins 中运行测试用例
- android - 如何自动化没有在 iOS 平台上编写的任何 UI 的库?
- angular - 如何让 Bootstrap 组件与 Angular 6 一起使用?
- java - Android Java 多数组初始化
- jmeter - 在所有线程上一一执行 csv 行
- mongodb - 将 MongoDB 连接到 MERN 应用程序
- amazon-web-services - 如何在 docker 中访问弹性 beanstalk 环境属性
- apache-kafka - Spring Kafka lib和本机Kafka Java API之间的区别
- makefile - bison/yacc 在 %union 中使用定义