>>791
例えばだが
RaycastHit hit;
if (Physics.Raycast(transform.position,transform.foward, out hit,100f)){
BaseClass bs=hit.transform.GetComponent<BaseClass>();
if(bs!=null)bs.MethodA();
}
とかやるってこと。
対象に貼り付けておくスクリプトはBaseClassから派生して自分にあった
MethodA()をオーバーライドしておく。
100もcase文を書くのがまずいかどうかは正直わからんといえばわからん。
ただ100番目のケースに至る場合caseの条件を100回確かめることになるのは確かだ。
それ自体が頻繁に呼び出されることもなく100番目のケースが呼ばれることはめったにない、
ほとんどは10番目くらいまでで終わるというならそれほど悪くはないかもしれない。
ソースがまとめて見れるしそれぞれの処理がそれぞれのスクリプトにばらけてしまうのはいやだ、
というのもわからいではないしね。
他にもやり方は考えられてこれまた例えばだが
case文に入れていた処理を関数化し配列化したDelegateにそれぞれ格納しておいて
RayCastでヒットさせる対象の方には自分のタイプ番号をintで返すメソッドをもつスクリプトを張っておき
RaycastHit hit;
if (Physics.Raycast(transform.position,transform.foward, out hit,100f)){
ReturnNumClass rn=hit.transform.GetComponent<ReturnNumClass>();
if(rn!=null)this.delegateArray[rn.ReturnMyType()]();
}
とかもありえる。まぁ色々やり方はあるってことだ