Alpha ClippingしているマテリアルのShadowがEditorではちゃんと表示されるのにbuildではクリップされずに表示される。
ここで報告されているバグ
issuetracker.unity3d.com
解決策(ワークアラウンド)
マテリアルのShader設定をComplex Litに設定する(処理は少し重くなっちゃうけど)
Alpha ClippingしているマテリアルのShadowがEditorではちゃんと表示されるのにbuildではクリップされずに表示される。
ここで報告されているバグ
issuetracker.unity3d.com
解決策(ワークアラウンド)
マテリアルのShader設定をComplex Litに設定する(処理は少し重くなっちゃうけど)
UnityからStorageの使用料で請求が来ていて、一体何で使用しているのか分からなかったので問い合わせたところ、Version Controlに関するものと、自動ビルドに関わるものでした。
Version Controlは、元々、Unity Colaboration時代に無料だったから使っていただけだったのでリポジトリを全部削除しました。
また、Build Automation(旧Cloud Build)で使用しているStorageに関しては、5GBまでは無料だそうですが、5GBを超えた分に関しては、
Storage(GB) x 保存期間(hour) x $0.00019 が掛かるとのこと。
なので、例えばビルド履歴に1GBのビルドがあると何もしなくても1ヶ月あたり、1GB * 24時間 * 30日 * $0.00019 -> $0.1368 が掛かります。
これを避けるには、ビルド履歴からビルドを選んで削除することで使用しているStorage量を削除する必要があるそうです。
これも過去に遡ってビルドを削除しました。
以下のようなケースでは、コードを追加しても変化がない
private async UniTask Start() { while (true) { Debug.Log("hoge");//後から追加しても反応しない。文字列変更も反映されない。 await UniTask.Yield(); } }
UniTask内であっても、以下のように呼ばれ直すような場合は大丈夫
private void Update() { Hoge().Forget(); } private async UniTask Hoge() { Debug.Log("hoge");//後から追加しても、ちゃんとhogeが出力されるようになる。文字列変更も反映される await UniTask.Yield(); }
HotReloadは関数が呼びなおしされるっぽいので、以下のようにしておけば反映される。できるだけ細かく関数に分けておくようにすると良さそう。
private async UniTask Start() { while (true) { PrintHoge(); await UniTask.Yield(); } } private void PrintHoge() { Debug.Log("hoge"); //後から追加しても、ちゃんとhogeが出力されるようになる。文字列変更も反映される }
ビルドしたときにできるBackUpThisFolder_ButDontShipItWithYourGameを自動で削除する方法。
public void OnPostprocessBuild( BuildReport report )
を使っていたら、なぜUnity Build Automationで何故か処理が走らなかった。
以下にあるコードを使ったらうまくいった。
forum.unity.com
こっちは、
public static void OnPostProcessBuild(BuildTarget target, string path)
を使っていた。
とにかくうまくいってよかった。
ApplovinMAXを使いつつ、AdMobを使っている場合に発生するっぽい?
以下に対処法が書いてあった。
forum.unity.com
launcherTemplate.gradle と mainTemplate.gradleの両方に
packagingOptions {
exclude 'META-INF/kotlinx_coroutines_core.version'
}
を追加する。もしくは、
で解消しました。
ShaderGraphでライトの色を獲得したいときに、Custom Function Nodeを作って以下のようにすると思います。
#ifdef SHADERGRAPH_PREVIEW
Color = 1;
#else
Light light = GetMainLight();
Color = light.color;
#endif
プロジェクトをUnity 2022にアップデートしたタイミングだと思うのですが、なぜかこのGetMainLight()でライトが取得できなくなっていました。
URPの設定ファイル内、Lightingの項目にMain Lightという項目があるんですが、これがDisabledになっていました。
これをPerpixelにすることでGetMainLightが効くようになりました。