【问题标题】:How to change variables between scripts in UnityScript?如何在 UnityScript 中更改脚本之间的变量?
【发布时间】:2014-05-11 07:22:33
【问题描述】:

我让一个游戏在层级面板中有两个对象。一个叫GameScreen,另一个叫我设置的Clock。每个都附有自己的脚本。 GameScreen 使用 game.js,另一个使用 clock.js。

当我赢得比赛时,会出现一个弹出框并说:“你赢了!”这是由 game.js 脚本引起的。但是,clock.js 仍在运行,所以我的时钟仍在倒计时。当时间到时,clock.js 会弹出一个框说:“你输了!”

这会导致在您获胜时弹出“您赢了”屏幕,然后再出现您输了的屏幕。正如您可能猜到的那样,这非常烦人。如果有一种方法可以让我在一个脚本中更改另一个脚本中的变量,我可以让时钟在你获胜时停止,或者我可以让游戏在时间用完时停止。

有没有办法做到这一点?

例如,这里有两个 javascript 文件,一个在时钟上,另一个在 GameScreen 上。我希望第一个将第二个中的变量 changeMe 更改为两个。 1.js:

function start(){


}

2.js:

var changeMe:int;

【问题讨论】:

  • 您可能会考虑使用某种通用的GameController 对象来保存您的通用游戏信息。不过,要获得更详细的帮助,您可能想尝试在Unity Answers 上提出这个问题:)
  • gameObject.GetComponent。在工作中看不到 Unity 脚本参考,只需 google 即可。

标签: variables unity3d unityscript


【解决方案1】:

当你赢得比赛时,你可以这样从 game.js 中改变时钟的变量:

GameObject.Find("Clock").GetComponent("clock.js").variable_name = new_value;

,其中 [variable_name] 和 [new_value] 显然取决于您的项目。 variable_name 必须是公开变量。

【讨论】:

    【解决方案2】:

    你可以简单地使用SendMessage(),它会让你能够轻松地从另一个对象调用一个函数。基本上你需要在赢得比赛后编写一个销毁时钟的函数,假设你的函数名为destroyClock,所以你应该将其添加到您的 game.js 脚本中:

    gameobject.Find("here goes the name of your clock obj").sendMessage("destroyClock")

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-13
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-17
      相关资源
      最近更新 更多