我有一個小專案,我想避免為每個整數創建一個 setter。所以我在想是否有可能。
所以,我想設定的數量
player.setResource(player.money, 100);,
player.setResource(player.coal, 20);,
等。
我不確定首先是否可能,其次不確定如何撰寫函式本身。
public void setResource(int resource, int amount)
{
???
}
uj5u.com熱心網友回復:
enum為此使用一個。像這樣在你的專案中定義一個列舉
public enum ResourceType { Coal = 0, Money = 1, Health = 2 }
現在,您可以switch case在setResource函式中添加 a來檢查您傳遞的列舉,并設定相應的值。然而,這是假設您的所有值都是整數。您可以為浮點數制作一個單獨的浮點數,或者只對所有內容使用浮點數,由您決定。
這將是您的新 SetResource 函式,假設您有對播放器的參考。
public void setResource(ResourceType resource, int amount)
{
switch(resource)
{
case ResourceType.Money:
player.money = amount;
break;
case ResourceType.Coal:
player.coal = amount;
break;
}
}
uj5u.com熱心網友回復:
如果你真的想避免 setter 和 getter 為什么不使用公共屬性?看這里
uj5u.com熱心網友回復:
您可以使用 Enum 來定義資源型別和使用 Dictionary 來存盤每個資源的值。下面是一個例子:
public enum ResourceType
{
Coal,
Money
}
private Dictionary<ResourceType, int> _resources = new Dictionary<ResourceType, int>();
public void SetResource(ResourceType resourceType, int value)
{
_resources[resourceType] = value;
}
public int GetResource(ResourceType resourceType, int defaultValue = 0)
{
if (_resources.TryGetValue(resourceType, out var value))
return value;
else
return defaultValue;
}
uj5u.com熱心網友回復:
public class Player
{
public int money { get; set; }
public int coal { get; set; }
public void setResource(string resource, int amount)
{
this.GetType().GetProperty(resource).SetValue(this, amount);
}
}
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
Player player = new Player();
player.setResource(nameof(player.coal), 4);
}
}
uj5u.com熱心網友回復:
在你的方法中,目標沒有被傳遞,整數的值被分配給一個只存在于方法中的區域變數資源。錢和煤不受影響。
您需要傳遞這些資料的地址。
public void setResource(int value, ref int target)
{
target = value;
}
player.setResource(100, ref player.coal);
如果方法中沒有其他任何事情發生,get/set 屬性也會做同樣的事情。
uj5u.com熱心網友回復:
有多種方法可以做到這一點。我經常使用這種方法進行快速原型設計。
首先,您為要分配的資料創建兩個變數,然后創建一個 Setter 函式,然后您可以通過其他腳本設定變數。
int value 1;
int value 2;
public void SetData(int value1, int value2)
{
this.value1 = value1;
this.value2 = value2;
}
相同的方法可用于其他資料型別,您只需要創建變數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/351165.html
上一篇:敵人射擊本身-UnityC#
