Conversation
ku6ryo
commented
Sep 9, 2024
- Project Windowのプレハブを選択して、コンテキストメニューから「STYLY/Validate Prefab」を実行
- 検証項目は PrefabValidatorRunner内に記載
- 現時点で検証できる機能は以下の通り - 利用不可能なシェーダーを使用していないか? - 利用不可能なコンポーネントを使用していないか?
- 検査結果はConsoleログに出力
1. Project Windowのプレハブを選択して、コンテキストメニューから「STYLY/Validate Prefab」を実行
2. 検証項目は PrefabValidatorRunner内に記載
3. 現時点で検証できる機能は以下の通り
- 利用不可能なシェーダーを使用していないか?
- 利用不可能なコンポーネントを使用していないか?
4. 検査結果はConsoleログに出力
| return passed; | ||
| } | ||
|
|
||
| private string GetGameObjectPath(GameObject obj) |
There was a problem hiding this comment.
これはどのクラスでも使いそうなので、どこかで共通で使えるようにしてもらえますでしょか?
There was a problem hiding this comment.
Utilityクラスを作成して共有化しました。
| string path = obj.name; | ||
| while (obj.transform.parent != null) | ||
| { | ||
| obj = obj.transform.parent.gameObject; |
There was a problem hiding this comment.
引数を上書きするとバグが実装されてしまう確率があがるので、別の変数に持ち替えて実装してください。
| if (material != null && System.Array.IndexOf(allowedShaders, material.shader) == -1) | ||
| { | ||
| string path = GetGameObjectPath(renderer.gameObject); | ||
| Debug.LogWarning($"Using unauthorized shaders: {material.shader.name}, Game Object: {path}"); |
There was a problem hiding this comment.
Unauthorized だと、ログイン的な認証されていないものという意味になるので、unsupported に変更できますでしょうか?
There was a problem hiding this comment.
メニュー名は「Validate Prefab (Alpha)」に変更します。
- メニュー名を「Validate Prefab (Alpha)」に変更 - プレハブ内のパス名の生成関数内の処理において、引数の値を直接変更せずに作業用変数を用意して変更する
|
パスについて /Assets/Validation/Editor/* |
| PrefabValidationManager validationManager = new PrefabValidationManager(); | ||
|
|
||
| // Added shader verification | ||
| Shader[] allowedShaders = { |
There was a problem hiding this comment.
対応シェーダー一覧は変更される可能性が高いので外部ファイルにしていただけると助かります。
There was a problem hiding this comment.
色々と検討しましたが、Configフォルダーを作成して、そちらに機能別にクラスを分けて対応しました。ほかの方法としては、ScriptableObjectにする方法が考えられますが、パッケージ内部にあるScriptableObjectをうまく指定する方法が思いつきませんでした・・・
| validationManager.AddValidator(new ShaderValidator(allowedShaders)); | ||
|
|
||
| // Added forbidden components | ||
| System.Type[] forbiddenComponents = { |
There was a problem hiding this comment.
非対応コンポーネント一覧は頻繁に変更する可能性が高いので外部ファイルにしていただけると助かります。
結果がConsoleに出力されるだけですと、ユーザーは何が起きたのか気づきにくいので成功/失敗ダイアログで通知するなどした方が良いと思います。 |
|
@zabaglione ご対応ありがとうございます。 |
・検証用の情報をConfigフォルダ内に移動 ・プライベートフィールドの先頭に"_"を付与
…がわかるメッセージ) - マテリアル関連(Shaderとテクスチャサイズ)の検査を一時的に無効化
|
動作のチェックをしました。 不具合、修正いただきたい点 Warning が出そうな prefab を作っても warning がでない。
上記の通り深くまでチェックされていないと思ったので、prefab の GameObject 直下のコンポーネントで確認をしています。 Prefab を選択していないときに「Validate Prefab (Alpha)」が選択できないようにしてほしい。 |
- このクラスもMonoBehaviourの継承は不要なので削除
|
Validator 使用しました (mac) 修正していただきたい点
|
- ログメッセージに"[STYLY Validator]"のプレフィックスをつけてログを出力 - Config系クラスがMonoBehaviourからの継承になっていたけど、不要なので削除
…ンセルするかを指定できるようにした
