【发布时间】:2014-11-03 12:44:07
【问题描述】:
请帮忙!
我有一个引用 2 个游戏对象的 Javascript 组件。问题是,游戏对象在启动时不存在,只有在玩家加入网络房间时才会实例化。网络管理器脚本使用 C#。
播放器实例化时,我需要从 C# 脚本更新 JS 脚本。
到目前为止我的代码......
SpawnSpot mySpawnSpot = spawnSpots [Random.Range (0, spawnSpots.Length)];
GameObject myPlayerGO = (GameObject)PhotonNetwork.Instantiate ("PlayerSHIP", mySpawnSpot.transform.position, mySpawnSpot.transform.rotation, 0);
standbyCamera.SetActive (false);
((MonoBehaviour)myPlayerGO.GetComponent ("PlayerControl")).enabled = true;
((MonoBehaviour)myPlayerGO.GetComponent ("PlayerShooting")).enabled = true;
myPlayerGO.transform.FindChild ("CameraCP").gameObject.SetActive (true);
myPlayerGO.transform.FindChild ("LocalShip").gameObject.SetActive (true);
myPlayerGO.transform.FindChild ("RemoteShip").gameObject.SetActive (false);
GameObject test = GameObject.Find ("RadarMgr");
Component test2 = test.GetComponent("3DRadar");
test2.Transforms[0] = "LocalShip";
//test.GetComponent("Radar_Mgr").Transforms[0] = "LocalShip";
这是网络 C# 脚本。我想要访问的 JS 脚本是“3DRadar”组件,它是“RadarMgr”游戏对象的一部分。 “Transforms[0]”是 JS 脚本的一部分,它包含所需的游戏对象,“LocalShip”是我试图告诉 JS 脚本使用的游戏对象。最后两行是我将 LocalShip 分配给 JS 脚本的失败尝试。我确实有其他语法而不是那 2 行,但没有任何效果,这就是它被留下的方式。
需要的另一个对象是“CameraCP”对象,但显然,如果我能弄清楚如何做 1,另一个对象将以相同的方式完成。
我在这里搜索了过去 3 天,统一的答案和一般的谷歌,但如果答案在某处,我找不到也无法理解。
我希望有人能对这个令人沮丧的障碍有所了解!
谢谢!
【问题讨论】:
-
你得到什么错误?这将有助于追查你做错了什么。它找到游戏对象等了吗?还可以尝试 Component test2 = test.GetComponent("3DRadar") as component("3DRader");
-
老实说,我不确定最后 4 行是否有效,因为最后几行没有任何语法错误。我现在再看看错误是什么,但我不记得我之前尝试过的一些语法
-
主要错误与“Transforms[0]”有关,我得到“UnityEngine.Component 不包含 Transforms 的定义”。 “Transforms[0]”是我想要分配一个游戏对象的东西。 JS 脚本有这个..."Transforms[0] = GameObject.Find("_Player").transform;"但这是一种占位符。
-
如果我打印 test 和 test2,我会得到“RadarMgr (UnityEngine.GameObject)”和“RadarMgr (3DRadar)”,所以我认为它可以正常完成这部分
标签: c# unity3d unityscript