2017-12-16 3 views
0

Ich schrieb gestern kleines Skript, aber es funktioniert nicht. (Serialize Felder wird nicht in Einheit und wenigen Fehlern z. B. ich kann nicht Verweis auf nicht-statische Mitglied (Feld serialize)). Kannst du mir bitte helfen.Ist es möglich, statische Felder im Unity Editor anzuzeigen?

Eg.

using UnityEngine; 
public class sExample : MonoBehaviour 
{ 
    [SerializeField] public static GameObject gameObj; 
    public void serializeUse() 
    { 
    //Do something with gameObj 
    } 
} 
public class serializeEx : NetworkBehaviour 
{ 
    public void Update() 
    { 
    If (!isLocalPlayer) 
    { 
     sExample.serializeUse() 
    } 
    } 
} 

Thanks a lot

Antwort

1

Das sollte funktionieren. Ich denke, dass Sie nicht statisch verwenden können, wenn Sie etwas dem Editor aussetzen möchten.

using UnityEngine; 
[Serializable] 
public class sExample : MonoBehaviour 
{ 
    [SerializeField] public GameObject gameObj; 
    public void serializeUse() 
    { 
    //Do something with gameObj 
    } 
} 

public class serializeEx : NetworkBehaviour 
{ 
    public void Update() 
    { 
    If (!isLocalPlayer) 
    { 
     sExample.serializeUse() 
    } 
    } 
} 

Edit:

Statiken scheinen für JavaScript zu arbeiten, wie in this Beitrag erwähnt. Damit dies funktioniert, müssen Sie im Inspector zur Debug-Ansicht wechseln.

image showing the debug view

EDIT2

: im Bild wie unten

Die Erklärung, was die Serializeable tut, ist documentation aus der Einheit genommen.

Mit dem Serializable-Attribut können Sie eine Klasse mit den Untereigenschaften in den Inspector einbetten.

Sie können damit Variablen im Inspektor anzeigen, ähnlich wie ein Vector3 im Inspector angezeigt wird. Der Name und ein Dreieck zum Erweitern seine Eigenschaften. Dazu müssen Sie eine Klasse erstellen, die sich von System.Object ableitet und ihr das Serializable-Attribut geben. In JavaScript ist das Serializable-Attribut implizit und nicht erforderlich.

using UnityEngine; 

[System.Serializable] 
class Test : System.Object 
{ 
    public int p = 5; 
    public Color c = Color.white; 
} 
+0

Können Sie erklären, was das [Serializeable] tut? Ich bin neu in C# –

+0

sicher kann ich! :) Ich habe die Antwort bearbeitet. Wenn meine Antwort dein Problem behoben hat, würde ich mich freuen, wenn du es akzeptierst :) –

Verwandte Themen