現時点では、次のコードに似た 7 つの if ステートメントがあります。
if(hit.collider.gameObject.tag == "Colour1" && start_time > look_at_time)
{
new_colour1.ChangeObjectMaterialColour(hit.collider.gameObject.renderer.material.color);
var colums = GameObject.FindGameObjectsWithTag("column");
foreach( GameObject c in colums)
c.GetComponent<MeshRenderer>().materials[1].color = new_colour1.orignalMaterial;
}
else if(hit.collider.gameObject.tag == "Colour2" && start_time > look_at_time)
{
new_colour2.ChangeObjectMaterialColour(hit.collider.gameObject.renderer.material.color);
var colums = GameObject.FindGameObjectsWithTag("column");
foreach( GameObject c in colums)
c.GetComponent<MeshRenderer>().materials[1].color = new_colour2.orignalMaterial;
}
各ステートメントは約 6 行のコードであり、多くのスペースを占有し、読みにくい場合があります。私がやりたいことは、これをリファクタリングする方法を見つけて、私のコードが少しぎこちなくなり、スペースを取りすぎないようにすることです。
if ステートメントのコレクションを switch ステートメントに変更することを考えていましたが、switch ステートメントは上記のように 2 つの引数を処理できないことがわかりました。コードをリファクタリングして同じ機能を維持できる他の方法がある場合、または if ステートメントのコレクションにこだわっていますか?
編集
私の7つのステートメントのうち2つを含むように更新されました。IFステートメントの量を減らすか、より賢い方法を見つけようとしています。これ以上余分なコード行や if ステートメントを追加したくありません。