【Unity】ディレクティブを使用しているときに発生するwarning対策
目次
ディレクティブとはなにか
Unityはプラットフォーム依存コンパイル
という機能を持っています。これは、Unityで作成したゲームやアプリを複数のプラットフォームで動かしたい場合に、各プラットフォームに依存したコード(ファイルの保存領域、Bluetoothの使用)を1つのスクリプト内で書けるようにする仕組みです。
参考リンク
なぜwarningが発生するのか
原因はプラットフォームに依存(ディレクティブ指定)しているコードは、Unity Editor上のコンパイルでは無視されることにあります。
無視されるということは、宣言した変数をEditor上で実行するときは使用していないと見られるケースが発生します。
例
この例では、スマホ用OS向けにビルドすることを考えてディレクティブを設定しています。記述上はNumber
を使用してしますが、UnityEditor
から見ると、Number
は使用されていない変数になります。
1 |
|
対策方法
1. エディタ用のダミー処理を作る
上の例はEditor用の処理が書いてありませんでした。何かしらのダミー処理で変数を使うようにすればwarning
の発生を抑える事ができます。それと同時にテストを書くときのことを考えても、内部処理はダミーでも実装しておいたほうがいいかと思います。
1 |
|
2. 1つのスクリプト内だけ特定のwarningを発生させない
プリプロセス命令をファイルの先頭に書くことによってコンパイル時の処理を指定する方法です。
以下のようなwarning
表示が表示された場合、これを解決するにはCS0149
というwarningを発生させないプリプロセス命令が必要になります。
1 |
|
CS0149
のwarningを発生させないようにするための記述は以下のようになります。
1 |
|
3. プロジェクト全体に対して発生させたくないwarningを指定する
この方法を取ると、指定したすべての条件に一致するものが表示されなくなってしまうので、設定する場合は慎重に行ってください。
.rspとは
MSBuild.exeのコマンドラインスイッチを含むテキストファイル。詳しくは以下リンクを参照。
設定手順
Assetsフォルダ
下にcsc.rsp
というファイルを作成してください。(Assets/csc.rsp)- UnityEditorでファイルを作成すると見た目上は、
csc.rsp
に見えますが、拡張子がcs
になってしまうので、エクスプローラーから作成する
- UnityEditorでファイルを作成すると見た目上は、
csc.rsp
内に-nowarn:xxxx
と記述するxxx
の部分は`warning時に表示される数字の部分です。- 複数指定したい場合は、記述した部分の下に追記してく
設定例
1 |
|
【Unity】ディレクティブを使用しているときに発生するwarning対策
https://blog.djima.net/2021/03/28/【Unity】ディレクティブを使用しているときに発生するwarning対策/