Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在游戏对象中启用多个单行为组件_C#_Unity3d_Multiplayer - Fatal编程技术网

C# 在游戏对象中启用多个单行为组件

C# 在游戏对象中启用多个单行为组件,c#,unity3d,multiplayer,C#,Unity3d,Multiplayer,因此,我尝试在这里制作一个多人游戏,为场景中的每个对象使用不同的游戏对象和c#脚本 问题是,当我生成玩家控制的对象时,每个玩家共享对场景中每个生成游戏对象脚本的控制,这意味着,当有人按下“s”时,例如,每个玩家都会向后移动,而这不是我希望游戏的行为 --所以,我知道解决这个问题的唯一方法是,在禁用所有脚本(组件)的情况下生成它们,并在游戏对象上使用另一个脚本启用它们,但我必须创建一个脚本来逐个启用每个组件,而且每次我向新单位添加一个新脚本时,都需要创建或编辑一个新脚本,等等,所以我想我可以做下面

因此,我尝试在这里制作一个多人游戏,为场景中的每个对象使用不同的游戏对象和c#脚本

问题是,当我生成玩家控制的对象时,每个玩家共享对场景中每个生成游戏对象脚本的控制,这意味着,当有人按下“s”时,例如,每个玩家都会向后移动,而这不是我希望游戏的行为

--所以,我知道解决这个问题的唯一方法是,在禁用所有脚本(组件)的情况下生成它们,并在游戏对象上使用另一个脚本启用它们,但我必须创建一个脚本来逐个启用每个组件,而且每次我向新单位添加一个新脚本时,都需要创建或编辑一个新脚本,等等,所以我想我可以做下面这个脚本

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.Networking;

 public class PlayerNetControl : NetworkBehaviour {

  public MonoBehaviour[] components2enable;

  public override void OnStartLocalPlayer()
  {
     foreach (MonoBehaviour cmp in components2enable)
     {
         cmp.enabled = true;
     }
  }
}
完成此操作后,我希望我使用unity添加到脚本中的每个“单行为组件”都能启用,但对于仅控制游戏对象的玩家来说,它什么也不做,我检查了游戏对象上的组件并进行了测试,它们仍然是禁用的

还有,除了我所知道的方法之外,还有其他方法可以解决这个问题吗?如果是这样的话,我希望你能启发我如何教我


请帮助,我最近开始编码,我真的需要C#

的帮助检查islocalplayer

我认为这解决了你所有的问题