我需要使用脚本中定义的一些变量,但是当我调用它们时,它们的值为0.我不知道我做错了什么。
示例:
Script1.cs
public int cont;
public void Method() { cont++; }
void Update() { Method(); }
Script2.cs
public Script1 usingScript1;
void MethodX()
{
usingScript1.GetComponent<Script1>();
Debug.Log(usingScript1.cont);
}
void Update() { MethodX(); }
这个脚本应该显示“cont”变量增加,因为它是从Update()调用的,但是没有发生。当我打电话给它时,它为0并且不会增加。
另外,我在Ispector中引用包含Script1.cs的对象。一定是一件我想念的简单事情。我甚至试过调用Method()。
答案 0 :(得分:2)
在此代码中的任何地方都不会调用名为Method()的函数。因为它是修改变量值的唯一因素,如果它永远不会被调用,则cont将永远不会从其默认值零变化。
usingScript1.GetComponent<Script1>();
到
usingScript1 = GetComponent<Script1>();
后一行代码使用Script1设置变量,以便您可以在代码中使用它。前者只是调用函数而不对它返回的信息做任何事情。
编辑:GetComponent()只会将两个脚本连接到同一个游戏对象。否则,您可以使用FindObjectOfType()。
答案 1 :(得分:2)
只是添加大家提到的内容,您是否尝试初始化“续”?
此
public int cont;
变为
public int cont = 0;
如果这不起作用,也尝试在Start()函数中初始化它。
答案 2 :(得分:0)
我设法解决了它,从未想过它。就这么简单。创建一个对象的Instad,我只是将变量设为静态并使用该类调用它们。
Script1.cs
public static cont;
Script2.cs
Script1.cont;
它有效。