for (int m = 0; m < materialObjects.Length; m++)
{
for (int i = 0; i < materialModifiers.Count; i++)
{
if(materialModifiers[i].valueType == LittleSubstanceModifier.ValueType.Float)
{
if (materialModifiers[i].valueFloat[0] != materialModifiers[i].oldValueFloat[0])
{
materialObjects[m].material.SetFloat(materialModifiers[i].identifier, materialModifiers[i].valueFloat[0]);
materialModifiers[i].valueFloat = materialModifiers[i].oldValueFloat;
}
}
else if (materialModifiers[i].valueType == LittleSubstanceModifier.ValueType.Float2 || materialModifiers[i].valueType == LittleSubstanceModifier.ValueType.Float3 || materialModifiers[i].valueType == LittleSubstanceModifier.ValueType.Float4)
{
if (materialModifiers[i].valueFloat != materialModifiers[i].oldValueFloat)
{
materialObjects[m].material.SetFloatArray(materialModifiers[i].identifier, materialModifiers[i].valueFloat);
materialModifiers[i].valueFloat = materialModifiers[i].oldValueFloat;
}
}
else if (materialModifiers[i].valueType == LittleSubstanceModifier.ValueType.Int)
{
if (materialModifiers[i].valueInt != materialModifiers[i].oldValueInt)
{
materialObjects[m].material.SetInt(materialModifiers[i].identifier, materialModifiers[i].valueInt[0]);
materialModifiers[i].valueFloat = materialModifiers[i].oldValueFloat;
}
}
else if (materialModifiers[i].valueType == LittleSubstanceModifier.ValueType.Int2 || materialModifiers[i].valueType == LittleSubstanceModifier.ValueType.Int3 || materialModifiers[i].valueType == LittleSubstanceModifier.ValueType.Int4)
{
}
else if (materialModifiers[i].valueType == LittleSubstanceModifier.ValueType.Bool)
{
}
else if (materialModifiers[i].valueType == LittleSubstanceModifier.ValueType.ColorField)
{
}
else if (materialModifiers[i].valueType == LittleSubstanceModifier.ValueType.Vector2)
{
}
else if (materialModifiers[i].valueType == LittleSubstanceModifier.ValueType.Vector3)
{
}
else if (materialModifiers[i].valueType == LittleSubstanceModifier.ValueType.Vector4)
{
}
}
}
我正在做一個工具,現在的,並且用戶能夠選擇一個變量類型用戶可以在巡視窗口中進行編輯。
要選擇變量我使用一個枚舉,但然後檢查他們選擇哪種類型的變量,我使用了一堆Else Ifs。現在選擇變量,它可以與Else一起使用If,但是當它改變值時,我不能每次添加一個字母或更改一個數字時再做10個if。
所以我的問題,我怎麼能通過選擇的變量類型,沒有找到他們沒有一堆其他ifs選擇什麼?如果我可以使用var,它會很好,但它正在從另一個腳本中更改。
對不起,我真的不知道該怎麼稱呼這個以及如何問。
編輯:這是我的代碼,這將是一個更好的方式做到這一點?
Edit2:對Robyn的迴應 - 我只是寫了一個例子的代碼,它基本上是唯一的方法,我會知道如何做到這一點。對不起,我會盡力解釋。 在我發佈的圖片中,有標識符文本框,其中包含不透明度。 然後下拉所有變量類型。然後它有一個文本框。你點擊按鈕添加Mod,並彈出一行。你選擇你的變量類型,放入材料標識符(例如不透明度)。所以要改變不透明度,它需要是一個浮動。因此,當您更改浮動框值時,它將更改材質不透明度。 我基本上需要一個值,可以用作一個浮點數,整型,布爾等... 我從來沒有使用開關或案例,所以我真的不知道它究竟做了什麼。但我會試試看!那謝謝啦。 我剛上傳了2張圖片,試圖直觀地解釋一下它。
你的問題太廣泛了。你需要嘗試_something_,如果你有一些特殊的麻煩,發佈一個問題,包括一個好的[mcve],準確地顯示你所嘗試的內容,並且準確地解釋代碼的作用,你希望它做什麼,以及什麼你無法解決自己的問題。根據你的模糊描述,我會提出多態性,即基本抽象類型(如接口)描述編輯器所需要的類型層次結構,然後具體實現處理用戶輸入和顯示。 –
真的很抱歉,不知道我想要做什麼叫。 我剛剛添加了代碼,也許這會有所幫助。我只需要一個更好的方法來做到這一點。 – LittleRain
你可以嘗試使用工廠模式。這樣你就可以描述傳入工廠的對象中的邏輯。這是我使用的模式,否則邏輯變得更難管理。 http://www.dofactory.com/net/factory-method-design-pattern – Programmer