簡體   English   中英

分配給各種類C#的方法列表

[英]List of methods to assign to various classes C#

我在Unity中有一個沙箱世界,有各種游戲對象,最終會有一組玩家可以在點擊這個對象后選擇的交互(最好的例子是模擬人生)。

我基本上希望每個對象都包含從另一個方法列表中分配的方法列表。 所以也許有一個樹有“搖動”方法,我想將“搖動”方法分配給樹的交互列表,但搖動方法在另一個類中定義。 我也可能有一輛車也可以采用“搖動”方法。

我知道我可以列出一個Action列表。

List<Action> interactions = new List<Action>();

並且這個列表可以用方法填充但是這是我上面解釋的最好的解決方案,並且我能以某種方式擁有一個包含所有可能的交互的枚舉,它會自動調用特定GameObject的特定方法嗎?

我不確切地知道你想要實現什么以及它是否是最好的解決方案,但對我來說這聽起來像是對戰略模式的一個很好的用途:

// This is the 'strategy' in your case
public interface IInteraction
{
    void Do();
}

public class GameObject
{
    // Here is your list of interactions - you can do whatever you want with it.
    public List<IInteraction> Interactions { get; set; }
}

// Here is an interaction
public class Shake : IInteraction
{
    public void Do()
    {
        ....
    }
}

一種方法是將每個操作定義為自己的MonoBehavior腳本。 然后,您需要做的就是將每個行為作為一個組件附加到每個游戲對象。

這將要求您更改在另一個類中定義的所有操作的模式,但應該保持相當干凈。

然后,要執行每個操作,您只需檢查該游戲對象是否具有該組件並執行其操作。 Shake s = gameObject.GetComponent<Shake>();
if(s != null)
{
s.Shake(shakeParameters);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM