2017-08-26 5 views
0

Ich bin ziemlich neu in Unity und sehr neu bei Netzwerkkonzepten. Ich versuche, ein NetworkManager-Skript mit einer benutzerdefinierten OnServerAddPlayer-Funktion an ein leeres Spielobjekt mit einer NetworkManager-Spielkomponente anzuhängen. Wenn ich dies jedoch versuche, erhalte ich den Fehler "Die Skriptklasse kann nicht gefunden werden ... ... stelle sicher, dass der Dateiname und die Skriptklasse übereinstimmen".So implementieren Sie NetworkManagers?

Meine Forschung hat vage angedeutet, dass möglicherweise nur MonoBehaviour-Skripte an GameObjects (?) Angehängt werden können, aber ich konnte nirgendwo etwas finden, das dies explizit angibt. Und wenn man NetworkManager-Skripte nicht an GameObjects anhängen kann, wie würde man dann auf Variablen in der NetworkManager-Komponente wie startPositions und spawnPrefabs verweisen? Und muss das Skript an ein GameObject für public override OnServerAddPlayer (NetworkConnection conn, short playerControllerId) {...} angehängt werden?

Vielen Dank im Voraus!

Edit: Hier ist mein Skript:

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); 
    } 

} 

Ich versuche, das Skript an, indem es aus der Projektansicht auf den Inspektor für ein leeres Objekt mit dem Networkmanager, NetworkManagerHUD und NetworkDiscovery Komponenten Ziehen befestigt .

+0

Veröffentlichen Sie Ihr Skript und erklären/zeigen Sie, wie Sie es an Ihr Objekt anhängen möchten – Programmer

Antwort

0

Nur Klassen, die von Component erben, können an eine GameObject angehängt werden, die MonoBehaviour enthält. NetworkManagertut erben von MonoBehaviour obwohl, so ist das nicht das Problem.

Die Fehlermeldung ist Ihre beste Anleitung hier. Stellen Sie sicher, dass sich Ihre Klasse in einer Datei mit der Bezeichnung PlayerManager.cs befindet und dass keine anderen Klassen in derselben Klasse definiert sind.