FMOD for Unityの使い方

FMOD Studioをインストール FMOD for Unityのインポートとセットアップ FMOD Studioのセットアップ Unityで鳴らす 英語が読めるなら公式ドキュメントがめちゃくちゃ丁寧だからそっちを見た方が早い。 https://www.fmod.com/docs/2.01/studio/welcome-to-fmod…

UnityのAndroid Buildがインストールできない際の対処法

問題 UnityのAndroidビルドをインストールしようとしたところ、 You can't install the app on your device. や お使いの端末に対応していません といった表示がでてインストールできなかった。 一部端末ではインストールできるため、余計に謎だった。 原因 …

Unity Build AutomationでTragetが突然Disabledになった場合の対処法

問題 Unity Build Automationにて特に何もしていないのに、いつも使っているiOSのビルドターゲットがDisabledとなり、ビルドできない状態になった。 原因と対処法 原因はビルドに使っていたXcode versionが古くなって使えなくなっていたことだった。 Xcode v…

UnityのParticle Systemの各データをShaderで取得する

UnityのParticle用シェーダーを作成する際、Particle Systemで設定した値(SizeやVelocityなど)を使いたいことがあります。 この際、以下の方法で各種情報にアクセスできます。 Particle SystemのRender > Custom Vertex Streams にチェックを入れる Custom…

Windowsのフォントが突然太字になる問題の対応

ある日突然、通常の文字が太字(ボールド体)になるバグが発生した。 こんな感じで日本語部分だけが太くなっている。 特定のアプリに限らず、複数のアプリでフォントがおかしくなっているようだった。 気付いたものだけでも、Discord、Notion、Chromeなどが…

【Unity】CRI Atom Craftの使い方

CRIをUnityで利用するにあたり、独自のサウンドデータを用意したい方向けのCRI Atom Craft入門記事です。 CRIをUnityに導入するのは別記事があるので、そちらをご覧ください。 ※どちらから始めても特に問題ないです。 hansel-bread.com CRI Atom Craft CRI A…

UnityにCRIを導入する

基本的にはこちらのチュートリアルに沿って進めます。 game.criware.jp CRIについて CRIの料金や権利表記周りについてまとめた記事があるので、気になる方は合わせてご覧ください。 tmls.hatenablog.com 導入手順 https://game.criware.jp/products/adx2-le/…

【CRI】ゲームでCRIWAREを使う際の料金や権利表記まとめ

CRIWAREの利用料金や権利表記周りの確認をしたい方向けのまとめ記事です。 少し複雑なので最終的には問い合わせ等で確認するのが良いかと思います。 目安としてご活用ください。 なお今回はUnityを使う想定で進めますが、その他のエンジン等でも大きく変わる…

【Unity】asyncを使ったシンプルなステートマシン

ステートマシンの実装は色々ありますが、asyncを用いたシンプルなものを紹介します。 と言いつつも実際はasyncを使う必要もなくて、単純にステート遷移時に実行する関数をasyncにしてるだけです。 ただ、世に出回っているステートマシンがOnEnter,OnUpdate,O…

【Unity】リストの各要素のラベルをそのクラスのenumの文字列にするエディタ拡張

こんな感じで各クラスに含まれるenumの値を参照してヘッダーとして表示してくれる。 (通常はElement 0などで表示される部分) Attribute using UnityEngine; public class EnumListAttribute : PropertyAttribute { public string EnumPropertyName = null;…

UnityにR3を導入する

Unity NuGetとOpenUPMをPackageManagerのScoped Registryに登録する Unity NuGetからR3を入れる OpenUPMからR3を入れる 両方入れないとダメらしい。 参考 R3をUnityNuGetとOpenUPMで楽々インストール

【Unity】シェーダーがビルドだけピンクになる(UniversalRenderPipelineの名前が原因)

問題 Unityエディタでは正常に描画されているのに、iOSビルド(未確認だが多分PCやAndroidも)ピンク(エラー状態)になる問題が発生した。 原因と対処法 下記のようにTagsのRenderPipelineにUniversalRenderPipelineを指定していたのが原因だった。 Tags { "Ren…

【Unity】xcrun: error: SDK "iphoneos" cannot be locatedエラーの対処法

問題 MacでiOS向けにビルドした際に下記のようなエラーが発生した。 Library/Bee/artifacts/iOS/AsyncPluginsFromLinker: xcrun: error: SDK "iphoneos" cannot be located 原因 ターミナル等でXCodeのコマンドラインツールのパスを確認するとこうなっていた…

【Unity】マウスクリック位置とXZ平面との交点の求め方

XZ平面上のマウスのクリック位置判定でRayを飛ばすほどでもないなーという時の計算方法 var mousePos = Input.mousePosition; var camera = Camera.main; // 視錐台上の一点を求める mousePos.z = 1; var cameraPlaneMousePos = camera.ScreenToWorldPoint(m…

Unity VFX Graph 準備編

VFXを初めて触る方向けのチュートリアル的なものです。 プロジェクト作成~VFX導入 Unity Hubを起動し、右上のNew Projectを選択 以下のように入力してCreateProjectを選択 Editor Version: 今回使いたいUnityのバージョン 3D (URP) Project name: 好きな名…

Unity シーン間でデータを受け渡す方法まとめ

Unityではシーンをまたぐときに全てのゲームオブジェクトが破棄されます。 そのため前シーンのデータを利用するには、データを受け渡す必要があります。 シーン間でデータを受け渡す方法 シーン間のデータの受け渡しはいくつか方法があります。 DontDestroyO…

Unity staticクラスを使ってシーン間でデータを受け渡す

staticクラスを用いてシーン間でデータを受け渡す方法について紹介します。 今回は、SceneAからSceneBに遷移することを考えます。 まずは受け渡したいデータを含むstaticクラスを作成しましょう。 CommonData.cs public static class CommonData { public st…

Unity Addressableの基本的な使い方

Addressableとは? Addressable(アドレサブル)とは、一言でいうと「色んなアセットにアドレスをつけて管理できる機能」のことです。 ではなぜアドレスをつけると便利になるかというと、以下のようなメリットがあるためです。 アドレスを指定することで、ス…

C#デザインパターンカタログ GoFの23パターン

GoFのデザインパターン23種類をC#で書いたまとめ記事です。 本記事はGang of Fourの「オブジェクト指向における再利用のためのデザインパターン」で紹介されている23種類のデザインパターンを参考に、最小構成のC#サンプルコードを列挙しています。 どのデザ…

Unityの新InputSystemとSteamworks SDKが競合してゲームパッドが反応しない

Unityの新InputSystemを試していたところ、ゲームパッドが反応しませんでした。 色々確認したところ、導入していたSteamworks SDKのSteamManagerを非アクティブにすると正常に動作することが分かりました。 じゃあ、SteamManagerを使えないのかというとそう…

herokuのGoogle API認証を簡単にするビルドパックの紹介

herokuでGoogle APIを認証するのは意外と骨が折れる。 それを簡単にしてくれるのが、こちらのビルドパックだ。 github.com 使い方 herokuにログインし、対象のアプリを選択する。 Settingsタブ内の、BuildpacksのAdd buildpackボタンをクリック。 表示された…

pkg_resources.VersionConflict: importlib-metadata エラーの対応

pipenv installをしたら、下記のエラーが発生した。 pkg_resources.VersionConflict: (importlib-metadata 4.11.3 (/home/user/.pyenv/versions/3.7.5/lib/python3.7/site-packages), Requirement.parse('importlib-metadata<2,>=0.12; python_version < "3.…

AttributeError: module 'ffmpeg' has no attribute 'probe'への対応

下記を実行する。 $pip install ffmpeg-python

fishが原因でVcXsrvがError: Can't open display:を返す問題への対処法

概要 VcXsrvというのを使ってWSLからGUIを起動するための設定を行っていた。 これは、matplotlibやPySimpleGUIなどを使う時に便利だ。 しかし、どれだけやってもError: Can't open display:と表示されてしまった。 結局、導入していたシェルfishの設定が問題…

Steamworks.NETをUnityに導入する

Steamworksとは Steamにリリースをする際に利用するデベロッパーツールの名称。 基本的には、https://partner.steamgames.com のこと。 Steamworks SDKとは Steamworksにビルドをアップロードするなど、ウェブで完結できないことをやる為のツール。ダウンロ…

【Unity】多言語対応をスプレッドシートで管理するシステム

多言語対応の問題点 UnityではTextMeshProなどを用いて文字を表示できます。 しかし多言語に対応する場合、例えば↓のようなスクリプトを書かなくてはいけません。 var lang = Application.systemLanguage; if (lang == SystemLanguage.Japanese) { text.text…

WSLでvim-lsp-settingsを使うと上手くいかないときの対応

問題 vim-lsp-settingsをLSP環境で使用し,:LspInstallServerを実行してもPlease do :LspInstallServer to enable Language Serverが表示される. 解決方法 .vimrcに下記を記述する. let g:lsp_settings_extra_paths=['/mnt/c/Users/[ユーザー名]'] 解説 WS…

パッケージリストを消したのにapt updateでFailed to fetchエラーがでる

sudo apt updateを実行した際、Failed to Fetchエラーが発生した。 下記のように、aptのパッケージリストを削除すれば直るという記事もあるが私はダメだった。 qiita.com ダウンロードサーバーの変更 sudo apt updateで参照するサーバーを変更することで解決…

UnityのエディタはWSLのVimが最強だということ

Unityのコード編集 Unityのコード編集ツール候補には次のような選択肢がある. Visual Studio Visual Studio Code Rider Vim Emacs IDE 単にコードを書く支援だけじゃなく,デバッグ機能や便利ツール全盛り!というIDE(統合開発環境)がある. これは,すご…

WindowsのUnityでVimを使う手順

UnityはWindowsで動かしたいけど、Vimが使いたいので、WSLでVimを使うことにした。 WSLのインストール WSL2を使っても良かったが、追加のコンポーネントが必要とのことで、ひとまずWSL1で利用することにした。 WSL2でも問題ない。 https://qiita.com/mataril…