/ / switchブロック内に戻ると、「到達不能コード」警告が生成されます-unity3d、unityscript

スイッチブロック内に戻ると、 "到達不能なコード"という警告が出る--unity3d、unityscript

私はUnityScriptコードを書いています。プログラムのある時点で、 switch ブロック。これは私のコードの要約版です:

function Move(target: int) {
var targetTransform : Transform;
switch (target) {
case 0:
// do something including assigning targetTransform
break;

case 1:
// do something including actually moving my object
return; // since I moved already, I want the function to terminate here

default:
// do something including assigning targetTransform
}
object.Move(targetTransform); // object is locally available
}

今、何らかの理由で、コンパイラは私に与えます

Assets/Scripts/GameMaster.js(490,9): BCW0015: WARNING: Unreachable code detected.

行は、 switch.

私の以前の研究から、私は多くの同様の問題を発見しましたが、それらのすべては、例えば break の後のステートメント returnsまたはa return 終わりに case returnある時点で編集。ここではそうではありません。 cases関数から完全に戻るため、他は break の外へ switch そしてそこから続けます。

この警告を取り除く方法はありますか?そもそも何が原因ですか、これは単なるバグですか?
可能な限り、私は使用しないことを好む boolean 後にそれを確認してください switch ブロック...これは、単に1つを終了するだけの行き過ぎのようです case 早く。

回答:

回答№1は4

このバグは少なくとも 2010。 「」を使用することは完全に合法です return 代わりのステートメント break、コンパイラは到達不能コードについて文句を言います。

基本的に2つのオプションがあります

  1. 警告を無視し、コードをきれいに保つ
  2. 交換して警告を回避します return とともに boolean + break そして、 boolean 後に switch ブロック

私の知る限り、あなたは「できない」 無効にする または 抑制する 警告。 C#では可能ですが、UnityScriptにはこの機能が欠けているようです。そのため、3番目の解決策が得られます。コードをC#に変換します:-)