0

ここで奇妙な質問です。一連のイベント クラスを管理するメイン クラスがあります...イベントの 1 つがメイン クラスの値を変更するようにします。

通常、ref キーワードを使用してこのようなことを行いますが、この場合は、コンストラクターで参照を渡し、クラスによるそれ以上の変更をメイン クラスに反映させたいと考えています。これは可能ですか?現在、私は次のものを持っています:

class MainClass {
     float transparency = 0.0f;

     List<Events> listOfEvents;

     listOfEvents.Add(new FadeInEvent(ref float transparency));
}

class FadeInEvent {
     float transparency;

     public FadeInEvent(ref float t) {
         transparency = t;
     }

     public void Update()  //Occurs every frame
     {
         transparency += 0.01f;
     }
}

これは動作しません; メイン クラスの透明度は、FadeInEvent クラスによって更新されません。どうすればこれを解決できますか?

4

2 に答える 2

1

float などの値型への参照を保持することはできません。できることは、パブリックプロパティを取得して変更するFadeInEventコンストラクタを使用することです。MainClass Transparency

class MainClass
{
    float transparency = 0.0f;
    public float Transparency
    {
        get { return transparency;}
        set { transparency = value;}
    }

    List<Events> listOfEvents;
    public void AddFadeInEvent()
    {
        listOfEvents.Add(new FadeInEvent(this));
    }
}

class FadeInEvent
{
    MainClass mainClass;

     public FadeInEvent(MainClass mainClass) 
     {
         this.mainClass = mainClass;
     }

     public void Update()  //Occurs every frame
     {
         mainClass.Transparency += 0.01f;
     }
}
于 2012-10-09T05:30:04.327 に答える