请帮忙!
我有一个引用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"游戏对象。 "转换[0]"是JS脚本中保存所需游戏对象的部分," LocalShip"是我试图告诉JS脚本使用的游戏对象。最后两行是我将LocalShip分配给JS脚本失败的尝试。我确实有其他语法而不是那两行,但没有任何工作,这就是它如何离开
所需的另一个对象是" CameraCP"对象,但显然如果我可以理解如何做1,另一个将以同样的方式完成
我在这里搜索了最近3天,统一答案和一般谷歌,但如果答案在某处,我找不到也不理解。
我希望有人可以对这个令人沮丧的障碍有所了解!
谢谢!
答案 0 :(得分:1)
您将其声明为不是3DRadar类型的组件。你必须更具体一点。
3DRadar test2 = test.GetComponent("3DRadar") as 3DRadar;
我不记得确切的语法,但我相信就是这样。
或
3DRadar test2 = test3D.GetComponent<3DRadar>();
答案 1 :(得分:1)
这是我追求的语法....
GameObject temp = GameObject.Find ("player(Clone)/LocalSHIP");
GameObject.Find("gameMgr").GetComponent<radarScript>().Transforms[0] = temp.transform;
&#13;