【问题标题】:How to use components of one script into another?如何将一个脚本的组件用于另一个脚本?
【发布时间】:2015-10-20 07:23:07
【问题描述】:

我想将一个 UnityScript 的组件(变量、函数、对象)用于另一个 UnityScript。为此,我使用以下脚本代码,但它会引发名为 nullpointerreference 的异常,并且不会在日志中显示值。

public var hitCar:camrot;

function Update()
{
    if(hitCar.hit==1)
        Debug.Log(hitCar.hit);
}

camrot 是另一个 UnityScript,其中hit 变量被声明为public integer,上面的代码是在与 camrot UnityScript 文件不同的脚本中实现的。

【问题讨论】:

  • 这里有什么更新吗?任何一个答案是否让您更接近解决方案?您自己找到解决问题的答案了吗?

标签: unity3d unityscript


【解决方案1】:

如果您想从另一个脚本访问变量,您可能必须找到脚本附加到的 GameObject 才能使用它。

(C#,我不懂 JavaScript)

脚本 1 - 附加到“玩家”游戏对象,脚本称为 PlayerScript

public bool canJump;

void Update()
{
    //code
}

脚本 2 - 附加到不同的游戏对象

GameObject player;
void Start()
{
    player = GameObject.Find("Player"); //finds the gameobject called "Player"
}
void Update()
{
    player.GetComponent<PlayerScript>().canJump = false; //use the variable in another script!
}

希望这会有所帮助:)

【讨论】:

  • 对不起,即使我尝试在 javascript 中转换它也无法正常工作
  • 我使用了您的建议,但在将其转换为 javascript 后
【解决方案2】:

根据您要查找的范围,请记住,如果您不声明变量并简单地分配一个值,它将自动属于 GLOBAL 范围。

因此,简单地分配 hitCar.hit=1 而不声明它将分配一个 GLOBAL 范围,并将在所有相互关联的脚本和函数中工作。如果您在另一个脚本中分配了 hitCar.hit,然后在此脚本中重新声明它,它也将恢复为 null。所以删除所有声明,看看会发生什么。

如果 UNITY 为“严格”,则在要执行的第一个脚本文件的顶部声明这些变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2015-03-01
    • 1970-01-01
    • 2011-06-01
    • 2020-08-28
    • 2022-08-02
    相关资源
    最近更新 更多