更改附加到许多游戏对象的脚本中的变量?

时间:2015-02-16 14:08:17

标签: unity3d unityscript gameobject

我一直在努力将这个实现到我的Unity 2D游戏中,但无法让它发挥作用。通过API挖掘我已经看到了这个Object.FindObjectsOfType.html,但我如何在我的情况下使用它?我有一个名为“InventoryHandler”的JS / UnityScript脚本,它被添加到由其他脚本生成的许多游戏对象中,如何在所有游戏对象中更改变量“selectedBlock”(来自InventoryHandler)?

很抱歉没有代码示例,但我甚至不知道从哪里开始,有任何建议或示例吗?

编辑:代码:

   //This is my ItemEffect.js
   var itemname = this.gameObject.name;
   this.gameObject.AddComponent(InventoryHandler);
   var itemnamenew = itemname.Replace("_pickup", "");
   selectedBlock = itemnamenew;
   var myScripts : InventoryHandler[] = FindObjectsOfType(typeof(InventoryHandler)) as InventoryHandler[];
   for (var hinge : InventoryHandler in myScripts) {
    hinge.selectedBlock = selectedBlock;
   }

 //This is my InventoryHandler.js
 public var selectedBlock : String;
 function Start () {
      if (gameObject.name.ToString() != "blok_placed")
      {
           selectedBlock = gameObject.GetComponent(ItemEffect).selectedBlock.ToString();
      }

  //This is my BlockSystem.js where I actually read and use selectedBlock var
        var block = new GameObject("blok_placed", typeof(SpriteRenderer), typeof(CircleCollider2D), typeof(BoxCollider2D));
        block.GetComponent(BoxCollider2D).size = Vector2(1,1);
        block.GetComponent(CircleCollider2D).radius = 0.5;
        block.tag = "blok";
        block.GetComponent(SpriteRenderer).sortingLayerName = "blokovi";
        block.AddComponent("BlockSelecting");
        block.AddComponent("Blok");
        block.AddComponent("InventoryHandler");
        var selectedBlock = block.GetComponent(InventoryHandler).selectedBlock;

1 个答案:

答案 0 :(得分:0)

我想你已经回答了自己的问题。更改脚本中的变量,该变量分布在多个对象上。您首先需要获取所有这些对象。这可以使用您在问题中提到的Object.FindObjectOfType函数来完成。

因为您似乎无法正确理解此功能的工作原理。我会给出一个小解释。

Object.FindObjectsOfType返回array Objects的{​​{1}}。这type。例如,您可以执行以下操作

type

现在您拥有所需脚本的var myScripts: ScriptName[] = FindObjectsOfType(ScriptName) as ScriptName[]; 。现在要处理这些,您需要Arrayforeach。在这份文件中已经给出了一个很好的例子。在文件案例中,for

给出了哪一个
HingeJoint

现在你所要做的就是用一些逻辑替换for (var hinge : HingeJoint in hinges) { hinge.useSpring = false; } 来替换变量。如果偏离变量,则可以访问该变量。但如果没有脚本可以查看,没有人能够告诉你这一点。