2017-08-26 147 views
0

我对Unity相当陌生,对网络概念非常陌生。我试图通过NetworkManager游戏组件将包含自定义OnServerAddPlayer函数的NetworkManager脚本附加到空游戏对象。但是,当我尝试这样做时,我收到“脚本类无法找到......确保文件名和脚本类匹配”错误。如何实施网络管理员?

我的研究隐约暗示,也许只有MonoBehaviour脚本可以附加到GameObjects(?),但我一直无法找到任何明确说明这一点的地方。如果无法将NetworkManager脚本附加到GameObjects,那么NetworkManager组件上的变量如何像startPositions和spawnPrefabs一样引用?是否需要将该脚本附加到要调用的public override OnServerAddPlayer (NetworkConnection conn, short playerControllerId) {...}的GameObject?

预先感谢您!

编辑: 这里是我的脚本:

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

class PlayerManager : NetworkManager { 

    int roundRobin = 0; 
    public GameObject newPlayerParent; 
    NetworkManager manager; 

    public override void OnServerAddPlayer (NetworkConnection conn, short playerControllerId) { 
     manager = gameObject.GetComponent<NetworkManager>(); 
     Transform positionObject = manager.startPositions [roundRobin]; 
     GameObject newPlayer = GameObject.Instantiate(manager.spawnPrefabs[roundRobin], positionObject.position, positionObject.rotation, newPlayerParent.transform); 
    } 

} 

我试图通过项目视图中拖动到检查用NetworkManager的,NetworkManagerHUD空对象附上脚本,NetworkDiscovery组件连接。

+0

发布您的脚本并解释/显示您如何将它附加到您的对象 – Programmer

回答

0

只有继承自Component的类可以附加到GameObject,其中包括MonoBehaviourNetworkManager确实尽管继承MonoBehaviour,所以这不是问题。

错误消息是你最好的指导在这里。确保你的班级在一个名为PlayerManager.cs的文件中,并且在同一个班级中没有定义其他类。