2016-03-27 24 views
0

Ben (denetçisindeki bazı kamu değişkenleri görmek için) serializable yapmak istiyorum bir sınıf var, ama ben de bu sınıfta Coroutines kullanmak gerekir. Sınıfımda Coroutines'u kullanmak için MonoBehaviour'dan almalıyım. Ama sonra serializable sınıfının özelliklerini kullanamıyorum.Koroutinli seri hale getirilebilir sınıf?

public class Act1HomeAwake : MonoBehaviour 
{ 
    public Act1_1HomeAwake act1_1HomeAwake; 

    public void StartAct1(int subActNumber) 
    { 
     switch(subActNumber) 
     { 
      case 1: act1_1HomeAwake.StartSubAct1_1(); break; 
     }      
    } 
} 

[System.Serializable] 
public class Act1_1HomeAwake // : MonoBehaviour 
{ 
    // don't see this 2 variables in the inspector WITH inheriting from MonoBehaviour 
    public OpenCloseAnimation openCloseEyesScript; 
    public Text textTipsTasksComponent; 

    // WITHOUT inheriting from MonoBehaviour compiler don't understand this construction 
    StartCoroutine("OpenCloseEyesAnimation"); 
} 
+0

Kodunuz geçerli C# değil mi? Herhangi bir sınıf üyesinin dışından bir yöntem çağırmaya çalışıyorsunuz. –

cevap

1

Sen ekranına istediğiniz sınıfı seri hale getirmek gerekir:

[Serializable] // this is needed to show the object in Inspector 
public class OpenCloseAnimation {} 

[Serializable] 
public class Act1_1HomeAwake 
{ 
    public OpenCloseAnimation openCloseEyesScript; 
    public void CallCoroutine(MonoBehaviour mb) 
    { 
     mb.StartCoroutine(OpenCloseEyesAnimation()); 
    } 
    public IEnumerator OpenCloseEyesAnimation(){ yield return null;} 
} 

Ama belki yanlış yaptığını düşünüyorum. Sınıfınızda bir koroutine ihtiyacınız varsa, o zaman belki bir MonoBehaviour olmak anlamına gelir. Diğer yol ise, koroutini, nesnenizi içeren MonoBehaviour'dan başlatmaktır.

public class MbClass : MonoBehaviour 
{ 
    public Act1_1HomeAwake homeAwake; 
    void Start(){ 
     // Considering you don't pass the MB in ctor anymore. 
     this.homeAwake = new Act1_1HomeAwake(); 
     StartCoroutine(this.homeAwake.OpenCloseEyesAnimation()); 
    } 
} 
İlgili konular