Unity

AddressablesのAddressableAssetEntry.IsFolderは特定のメソッドを呼ばないとtrueにならない

(com.unity.addressables 2.7.4現在の情報です。) AddressableAssetEntry.IsFolder というプロパティでフォルダかどうか判定できそうに見えるが AddressableAssetEntry.GatherAllAssets を呼ばない限りこのプロパティがtrueになることはない。 ビルドかけ…

Addressableから読み込んだシーンはSceneManager.GetSceneByNameで取得できないパターンがある

Addressables.LoadSceneAsync などでAddressableからシーンを読み込んだ時、 そのシーンが含まれるGroupのInternal Asset Naming ModeがFilename以外だと、 SceneManager.GetSceneByName で取得することができなくなります。 本来は Addressables.LoadSceneA…

Unity Application Patcherで "Patch hash not found." と表示された時はUnityに連絡しよう

巷を騒がせているUnityのセキュリティ脆弱性(CVE-2025-59489)対応について。 unity.com Unity Application Patcherで対応を行おうとした際に ログに "Patch hash not found." と表示された時は、 Unity Application Patcherの対応漏れの可能性があるためUn…

Photon QuantumとMultiplayer Play Modeを組み合わせると、Virtual Playerに好きなメッセージを送れて便利

Photon QuantumのSDKが無償化してから早2年。もう説明は不要ですよね! Unity6から利用できるMultiplayer Play Mode(以下MPPM)と組み合わせることで、 とても便利にマルチプレイのテストを行うことができます。 百聞は一見に如かずということで、まずは動…

Unity IAPのGoogle Play Billing Libraryサポート状況について(7まで。)

Google Playでアプリを配信する際、アプリ内課金(IAP)を実装するにはGoogle Play Billing Libraryを使用する必要があります。 Unityから使用する場合、大抵の人気のあるアプリストアでアプリ内課金を簡単に実装できるUnity IAPを利用するケースが多いでしょ…

久々にAndroidビルドしたら `Execution failed for task ':launcher:mapDebugSourceSetPaths'.`

Gradleでこんな感じのエラー出た時の対処法。 1: Task failed with an exception. ----------- * What went wrong: Execution failed for task ':launcher:mapDebugSourceSetPaths'. > Could not resolve all files for configuration ':launcher:debugRunti…

Unityで files.getUploadURLExternal と files.completeUploadExternal を使ってSlackにファイルをアップロードする

files.uploadが廃止になると聞いたので。

Unity Project AuditorにてSRP batcher compatibleなシェーダーが"Not compatible with SRP batcher"と判定される

環境:Project Auditor package | Project Auditor | 1.0.1 SRP batcher compatibleなシェーダーが"Not compatible with SRP batcher"と判定され警告が表示されるバグがあります。 Library/PackageCache/com.unity.project-auditor*/Editor/Modules/ShaderAn…

右下の"Development Build"を消すパッケージをUnity6対応しました

github.com このパッケージをインポートするだけで、画面右下の "Development Build "の表示が消すことができます。 パッケージマネージャーからインポートするだけの簡単設計。 詳しくは以前の記事をご覧ください。 と、それは良いんですが、Unityの更新の…

Screen.SetResolutionに適当な解像度を渡すと想定しないアスペクト比になってしまうことがある

Unity - Scripting API: Screen.SetResolution 16:9と16:10だけサポートしておけば良いだろう。という考えで、 1920x1080、1920x1200、...のような解像度のリストを準備し、 その中からユーザーに解像度を選択してもらうUIを準備していたところ、 意図せずウ…

Enumを簡単にStringとしてシリアライズできるパッケージ作りました

github.com なにこれ? こんなコードを書いてEnumをシリアライズすると、 .unityや.prefabを見ればわかるように、内部的には0, 1, 2というintの値として保存されます。 つまり、Enumの途中に値を追加/削除すると意図しない指定の変更が起きてしまいます。 ↓ …

Unity6で新規プロジェクトを作るとビルドがやけに長い時の対処法。ネタバレ:Forward+はシェーダーコンパイルが長いよ。

Unity6で新規URPプロジェクトを作ると、ビルド時間がやけに長く、 ログを見るとシェーダーコンパイルが遅くなっていることが分かります。 (以下、実測結果はM1 Max MacBook Proによるもの) Unity2021LTS(2021.3.43f1)、Unity2022LTS(2022.3.47f1)、Unity6(…

OnPostprocessBuildでゴニョゴニョしたら、macビルドが "~.app is damaged and can't be opened." と言われ起動しなくなった時の治し方

OnPostprocessBuildなどで.appの中身を直接いじると署名が無効になり壊れる。 public void OnPostprocessBuild(BuildReport report) { // ごにょごにょ #if UNITY_STANDALONE_OSX UnityEditor.OSXStandalone.MacOSCodeSigning.CodeSignAppBundle(report.summ…

Unityのログをファイルに書きつつ出力もする(Windowsのbashでもteeみたいなことがしたい!)

マルチプレイの確認に便利なUnity Multiplayer Play Modeパッケージ!にて、ソースコードを編集してもVirtual Playerに反映されないバグの対処法

Unity6から使えるMultiplayer Play Modeという公式パッケージがあります。 Editor上のプレイボタンを押すと最大3つのプレイヤーが自動で立ち上がり(Editor本体を入れて4つ)、 マルチプレイゲームのデバッグが簡単にできる!という非常に便利なパッケージで…

PresetManagerに登録してあるPresetがちゃんと反映されているか確かめるテスト

AppIconChangerUnity OSダイアログ無効化バージョン

github.com 4年前に公開したこのアプリアイコンを動的に変更できるパッケージ、 たまに「OSのダイアログ(↓の画像のやつ)消せないの?」という問い合わせが来てました。 その時の返信は、 「わかる。邪魔だよね。でもOS側で出してるやつだからどうしようも…

Unity Editorから同じネットワーク上にいるデバイスのプレイヤーにデータを送る

Unity Editorから同じネットワーク上にいるデバイスのプレイヤーにデータを送る https://t.co/fnpTJV1L9n #きゅぶろぐ pic.twitter.com/6Qcy58acdZ— きゅぶんず (@kyubuns) March 3, 2024 UnityEditor.Networking.PlayerConnection.EditorConnection とかい…

Steamでゲームをリリースするときは、セーブデータの保存パスにSteamIDを入れよう!

具体的に言うと、 C:/Users/{UserName}/AppData/Local/{GameTitle}/Save/{SteamID}/ というディレクトリ以下にファイルを置いていくのが理想系かなと思います。 LocalがLocalLowだったり、Saveの部分が違ったりするのは趣味の範囲。 伝えたいことは、 セーブ…

右下の"Development Build"を消すパッケージを作りました

github.com このパッケージをインポートするだけで、画面右下の "Development Build "の表示が消すことができます。 以下のような使用用途が考えられます。 デバッグコマンドを使って、PVの撮影や、アプリストア用のスクリーンショットが気軽に撮れる。 ゲー…

-nographicsオプションをつけてUnity Editorを起動するとRenderTextureが使えなくなる

AppIconChangerUnity では、OnPostprocessBuildでRenderTextureを使用してアイコンの拡縮を行なっていました。 しかし、アイコンが灰色になるというissueが上がってきたため調査をしていたところ、 Unity -quit -batchmode -projectPath . -executeMethod Bu…

(未解決) iOS 16でUnity製アプリが許可していない方向で起動する問題

何が起きてるの? 以下の画像のように "Allowed Orientations for Auto Rotation" を設定しているにも関わらず、 iOS 16(iPadOS 16も言わずもがな)上で、許可されていない方向でアプリが起動してしまう問題が発生しています。 再現方法 このバグは安定的に…

Unityでスクリプトからパッケージ依存を削除する方法

iOS/AndroidではUnityIAPを使っているけれど、Windowsでは使用していない。 それにも関わらず、UnityIAPが有効になっていると勝手にUnity Analyticsも有効になり気持ち悪いから Windowsビルドの時だけパッケージ依存を削除したい・・・みたいなことあります…

SteamDeck上でUnityのVideoPlayerを利用しても動画が再生されない時の解決策

これはゲーム開発者向けの記事です。 プレイヤーの方で対処方法を探している場合は[SteamDeck Proton GE]などでググってください。 症状 Winows上では、正しく動画が再生されている。 SteamDeck上で再生しようとすると、動画の代わりにカラーバーが表示され…

Unityで開発用に「どこでもセーブ」を実現してみる

まえがき ゲーム開発中、何かちょっと変えるたびに、何度も何度も同じ場面まで行って確認するのは面倒ですよね。 現在のシーンの状態を丸っと保存して、そこから再開できる「どこでもセーブ」機能を実現してみました。 Unityで「どこでもセーブ/どこでもロー…

Unityのログ表示を気軽にちょっとだけ見やすくする

Console Windowを大幅に改造してるプロジェクトも多いと思いますが、 気軽にちょっとだけ見やすくしたいこともありますよね。 完成形がこちら。 見た目の特徴 カテゴリ毎に色の違う■が出てて、カテゴリの認識がしやすい パラメーターが読みやすい 書き方の特…

Unityでも便利なLINQメソッドを色々使いたかったのでExtraLINQをさらに便利にしました

github.com Unityでも便利なLINQメソッドを色々使いたかったのでExtraLINQをUPM対応しましたから早一年。 この1年で増えたメソッドを紹介します。 TryGetFirst / TryGetLast DictionaryのTryGetValueっぽく使いたい時に。 if (items.TryGetFirst(x => x.Valu…

Unity2021から追加されたil2CppCodeGenerationを適切に設定するとIL2CPPビルドが最大50%早くなる

Unity2021もLTSがでたので安心して使えますね。・・・使えてますか? それはそれとして、 Unity2021から追加された EditorUserBuildSettings.il2CppCodeGeneration を適切に設定するとビルドが最大50%早くなるというお話です。 使い方 EditorUserBuildSettin…

Unity AndroidでApplication.targetFrameRateが効かないときに見る記事

QualitySettingsからvSyncをDon't Syncsに設定していても(無視される値にも関わらず)意味がないので、必ずスクリプトから QualitySettings.vSyncCount = 0; する必要がある。 Unity Issue Tracker - [Android] Application.targetFrameRate doesn't wo…

Unity 実機でエラーを検知したときに自動的にコンソールログをslackに送信する

実機上でエラーが発生した時、どうやってデバッグしていますか? AbcConsoleを使っていると、たったこれだけで、 エラーを検知した時(Debug.LogError/LogExceptionが呼ばれた時)に、slackにログを送信できます! slackのtoken取得はこちらのブログなどを参…