2017-03-22 35 views
1

私は、特定のプラットフォーム上で実行するために何かをしたい場合は、コンパイラがコードをチェックし、リファクタリングを停止する利便性の問題を、持っています。私は、Visual Studioでbarfooをリファクタリングこのシナリオでは、もしそうなら、それだけでbar = truefoo = true一部をリファクタリングしますが、foo = falseは変更されません。いくつかのケースでは、私は名前変更変数

bool foo; 
#if UNITY_EDITOR 
    foo = true; 
    return; 
#endif 
    foo = false; 

にコードを変更しますが、私はfooに何かを割り当てた後返すことができることを、確認する必要がありますので、それは、だけでなく、より面倒である、ことを避けるために

bool foo; 
#if UNITY_EDITOR 
    foo = true; 
#else 
    foo = false; 
#endif 

Unity Editorで到達できないコードについての警告も受け取ります。

だから私の質問は:これを処理するための最良の方法は何ですか? Visual Studioで現在のプラットフォームで使用されていないコードチェックとリファクタリングを行うことは可能ですか?

答えて

2

UnityEditor前述したように、私は、プラットフォーム固有の名前空間を使用する必要があるときに、実際に、私はプリプロセッサディレクティブを使用する唯一の状況です#elifステートメントがコメントと見なされるようになりました。

これは、Visual Studio 2015以降では簡単な修正が加えられています。変数の名前を変更する場合は、のコメントを含めるチェックボックスをオンにします。

enter image description here

+0

おかげで、あなたは本当にすべての私の質問に役立ちます! – Tavados

+0

ただし、コメントに構文チェックを追加することはできますか? – Tavados

0

私が知る限り、純粋なVSはそれをサポートしていません。 Resharperを使用する場合、リファクタリングされた名前をスクリプトで文字通り検索し、必要な処理を実行できます。ただし、有料の拡張機能です。そのためにお金を使いたくない場合は、プラットフォームに依存するコードには常にApplication.isEditorまたはApplication.platformを使用できます。ただし、指定されたプラットフォームでのみ存在する名前空間に問題がある可能性があります。つまり、Androidの場合はusing UnityEngine.iOSがコンパイルに失敗します。私は個人的にプリプロセッサディレクティブを避け、それ以外の方法がない場合にのみ使用します。プリプロセッサディレクティブを使用(UNITY_EDITORが)true#elseとのコードの残りの部分で使用された場合UnityEngine.iOSまたは

+0

私はそれが本当に私のためのオプションではありません避けて、私は、プラットフォーム固有のコードを必要とするユースケースの多くを持っています。 私はResharperを見ていきますが、もちろん私は自由な選択肢に感謝します。 – Tavados

+0

ええ、でもApplication.platformはどうですか?あなたのケースの大部分はカバーしていませんか? – piotrmitrega

関連する問題