如何使用C#更改JS GameObject?

时间:2014-11-03 12:44:07

标签: c# unity3d unityscript

请帮忙!
我有一个引用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天,统一答案和一般谷歌,但如果答案在某处,我找不到也不理解。
我希望有人可以对这个令人沮丧的障碍有所了解! 谢谢!

2 个答案:

答案 0 :(得分:1)

您将其声明为不是3DRadar类型的组件。你必须更具体一点。

3DRadar test2 = test.GetComponent("3DRadar") as 3DRadar;

我不记得确切的语法,但我相信就是这样。

3DRadar test2 = test3D.GetComponent<3DRadar>();

答案 1 :(得分:1)

这是我追求的语法....

&#13;
&#13;
GameObject temp = GameObject.Find ("player(Clone)/LocalSHIP");
GameObject.Find("gameMgr").GetComponent<radarScript>().Transforms[0] = temp.transform;
&#13;
&#13;
&#13;