在Unity 5中使用来自另一个脚本的变量

时间:2016-02-20 01:03:59

标签: c# variables unity3d scripting

我需要使用脚本中定义的一些变量,但是当我调用它们时,它们的值为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()。

3 个答案:

答案 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;

它有效。