当前位置: 首页 > 编程语言 > C#

如何在Unity C#中仅使用脚本中的游戏对象启用零件-组件分享

时间:2023-04-10 21:12:48 C#

C#LearningTutorial:HowtoEnableParts/AssembliesinUnityC#UsingOnlyGameObjectsinScript为了确保一个玩家无法控制它们,当您生成客户端时,它会激活您的脚本/相机,以便您可以看到和移动。虽然我想不出解决这个问题的方法,因为我不知道如何启用/禁用组件的子组件或启用子组件的子组件。我想通过脚本http://imgur.com/ZntA8Qx启用它这个http://imgur.com/Nd0Ktoy我的脚是这样的:使用UnityEngine;使用系统集合;publicclassNetworkManager:MonoBehaviour{publicCamerastandByCamera;//用它来初始化voidStart(){Connect();}voidConnect(){Debug.Log("正在尝试连接到Master...");PhotonNetwork.ConnectUsingSettings("0.0.1");}voidOnGUI(){GUILayout.Label(PhotonNetwork.connectionStateDetailed.ToString());}voidOnConnectedToMaster(){Debug.Log("加入Master成功。");Debug.Log("正在尝试连接到一个随机房间...");PhotonNetwork.JoinRandomRoom();}voidOnPhotonRandomJoinFailed(){Debug.Log("加入失败:没有房间。");Debug.Log("正在创建房间...");PhotonNetwork.CreateRoom(null);}voidOnJoinedRoom(){Debug.Log("加入成功。");SpawnMyPlayer();}voidSpawnMyPlayer(){GameObjectmyPlayerGO=(GameObject)PhotonNetwork.Instantiate("Body",Vector3.zero,Quaternion.identity,0);斯坦dByCamera.enabled=false;((MonoBehaviour)myPlayerGO.GetComponent("Movement")).enabled=true;monobehaivour下面的底部是我想让他们知道如何激活我生成的游戏对象的一部分,我只需要帮助我上面所说的,感谢你的帮助我通过预制件生成它,所以我希望它只编辑我生成的那个,而不是每个编辑级别中的那个,就像我想使用myPlayerGO游戏对象启用这些组件一样。这就是让我的游戏正常运行所需的全部,所以请帮忙。对不起,如果这是重复的,因为我不确定如何说这个标题。我统一您可以使用gameObject.GetComponentInChildrenComponentYouNeedcomponent=gameObject.GetComponentInChildren();启用和禁用子对象中的组件;component.enabled=false;您也可以使用gameObject.GetComponentsInChildren两个图像链接都指向同一个地方,但我想我明白了。我可能会建议您放置一些脚本,让您可以在Body游戏对象中连接HeadMovement脚本。例如:publicclassBodyController:MonoBehaviour{publicHeadMovementheadMovement;然后你可以将它连接到你的预制件中,并调用:BodyControllerbc=myPlayerGo.GetComponent();bc.headMovement.enabled=true;另一种解决方法是使用GetComponentsInChildren():HeadMovementhm=myPlayerGo.GetComponentsInChildren(true)[0];//true很重要,因为它会找到禁用的components.hm.enabled=true;我可能会说第一个更好,因为它更明确、更快。如果您有多个HeadMovements那么您将遇到问题。它还需要爬取整个预制件层次结构,以找到您在编译时已经知道的东西。以上就是C#学习教程:UnityC#中如何只使用脚本中的游戏对象实现部件共享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——本文整理自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: