Prefab編集画面でUIを追加した際にRaycastTargetをデフォルトでオフにするScriptを書きました

f:id:Kakovail:20200304182118g:plain

注意
2020-03-04時点、
Prefab にUIを追加、次の操作で自分自身を再度開く、とするとOnになることを確認しました
やらないとは思いますが念の為。また、改善次第反映します。

追記
数点、拡張性のあるPresetの存在を教えていただきました……!
こちらに参考としてリンクいたします!ScriptでEvemnt以外はオフにしているのを、手動でコンポーネントごとに設定できる感じです!!
私のScriptは、少し書き換えれば、移行してきたプロジェクトの当たり判定を消したりできる、というのはメリットかな、と……!

speakerdeck.com

baba-s.hatenablog.com

Script

github.com

使い方

RayCastDefaultRemoverInPrefabView.csをプロジェクトに配置!
大体どこでも大丈夫です。

これはなに?

UIを配置するときに、デザイナーさんと分業したりすることもあると思うんですが、RaycastTargetがOnになっているせいでめちゃくちゃに時間溶かしたり、オフにしなきゃって意識することでストレスが溜まったりするので、オフにしたいな、と思って書きました。すでにありそうでしたが、ぐぐラビティたりなかったので見つけられなく、書きました。
ボタンやスライダー等の、イベントがあるものはついたままになります。

参考

baba-s.hatenablog.com
dev.twsiyuan.com

流れ

上記サイト様、Scriptを参考したのですが、Prefab Viewに対応してない(と思います。Onのままだったので)みたいだったので、Prefab編集画面のみで動くものを参考にしながら書きました。

仕組み

こいつで毎回初期化するんだと思います。

これでイベントを登録する、的な感じです。hierarchyChangedっていう出来事に対して、やってほしい処理を入れてる、くらいの感覚です。

また、これでPrefabのID的なものが取れるので、これで同一かをチェックします。

さっきまで観測していたものを格納していって、更新があった場合、Event系が入っているかどうかでDisableにします。すでに設置してあるものは無視されます。

結果

ストレスめっちゃ減りました。
ただ、明示的にオンにするのを意識しないともちろんあかんです。
また、処理的にも少し軽くなるっぽいです!

更新

2020-03-04 20時
Prefabが相違な際によろしくなさそうなのでLoadしたPrefabが違う可能性がある場合にSKIPするようにしました。

「Prefab編集画面でUIを追加した際にRaycastTargetをデフォルトでオフにするScriptを書きました」への2件のフィードバック

  1. baba_sさんありがとうございます!!
    実は、これを書いた後に他の方にも指摘いただき、完全にリーチできていなかった内容だったので助かります……!
    今回の裏のコンテキストとして、既存のやつを全部オフにしたい、という過程もあったので、そちらで載っけたほうが有用だったな、と思いました!
    こちら、記事の中に更新で記載させていただきたいです!
    問題があったらご一報ください……!

コメントを残す

メールアドレスが公開されることはありません。必須項目には印がついています *