我一直试图在我的 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;