Unity

Unity

[Unity]Localizationを使って悩んだこと

やりたいことUnityでLocalizationパッケージを使って多国語を行おうとしました。基本的に以下のページを参考にさせていただいてできたのですが、迷ったこと、うまくいかなかったことをまとめておきます。迷ったことLegacyのTextでも使える?参考にさせていただいた記事ではText - TextMeshProに対してLocalizationを適応していました。LegacyのTextに対しても使えるか迷いました。結果問題なく使用できました。Text - TextMeshProと同様に右上の三点のアイコンをクリックすると”Localize”が表示されます。”Localize”をクリックすると...
Unity

Unityにゲームパッドからのイベントが来ない(x360ce使ってみた)

やりたいことUnityのInputSystemで以下の用に設定したのにゲームパッドからのイベントが来なかった時の対策の覚書です。原因ジョイスティックまず原因を書いてしまうと使用しているコントローラがゲームパッドではありませんでした。何を言っているかというと使用しているコントローラがUnityによりゲームパッドではなくジョイスティックとして認識されていました。確認方法どのgameObjectでもいいので”Player Input”コンポーネントを追加します。Open Input Debuggerをクリックします。Deviceの中にある確認したいデバイスをダブルクリックで選択します。Typeを確認...
Unity

[Unity]CanvasのUIの下のゲームオブジェクトがクリックできない

やりたいことUnity開発において、Canvasシステム上のUI要素が、その下に存在するゲームオブジェクトへの入力イベント(クリック)をうばってしまいます。結果、ゲームオブジェクトがクリックできなくなることがあります。(特にUIが半透明な場合ユーザにストレスを与えます。)本記事では、この問題に対する標準的な解決を提示します。解決策UIの設定変更することでイベントを無視されます。結果、下のオブジェクトにイベントを通すことができるようになります。この設定はUI/コードどちらから出も変更可能です。UIでの対応対応するUIのImageコンポーネントのRaycast TargetのチェックをはずことでU...
Unity

[Unity]Steamの実績(Achievement)の実装

やりたいことSteamの実績(Achievement)の実装します。前提SteamWorksで作成しているアプリのAppIDを取得するところ(アプリの設定ページが表示されている、ストアページが公開されている必要はないです)まで終わっていることを前提にしています。作業Steamworks.NETのインストール以下のページからSteamworks.NETをダウンロードします。この記事を書いた時点ではRelease 2025.162.1が最新でした。ダウンロードするのはAssetsの中の.unitypackageです。UnityEditorのメニューからAssets → ”Import Packag...
Unity

[Unity]Screen座標からWorld座標に変換がうまっくいかない

やりたいことこの記事はScreen座標(Input.mousePosition)からWorld座標に変換がうまっくいかないときの対策です。前提CanvasのRender modeは Screen Space - Overlay取得したWorld座標はUIの場所指定に使用ダメだった例ネットなどを見て以下のコードを試したのですがうまくいきませんでした。(処理に失敗するのではなく欲しい値が取得できませんでした。)Camera.main.ScreenToWorldPoint(Input.mousePosition);対策?どうも動作からScreen Space - OverlayでWorld座標を使用...
Unity

[Unity]UIがクリックされたことを検知

やりたいことUnityでUI(正確に言うとRectTransformのcomonentを持つGameObject)がクリックされたことを検知します。通常はButtonを継承すればいいのですが、そうもいかないとき(下にイベントをスルーしないといけないときなど)は自力でクリックされたことを検知する必要があります。実装以下の関数を使用します。bool RectangleContainsScreenPoint (RectTransform rect, Vector2 screenPoint, Camera cam);screenPointがrectの内側かどうかを検証します。内側の場合はtrueを返し...
Unity

[Unity]Transform.Translateで想定した距離移動しない

やりたいことUnityでTransform.Translateで想定した距離移動しませんでした。何が起こっているかを調査して対策を紹介します。ここでは一回のコールでの移動量に関して言及します。UpdateやFixedUpdateで繰り返し呼ぶ場合に意図しない動作するのは以下を参照してください。Time.deltaTimeを加味する必要があります。)具体例以下のコードを試しました。Debug.Log("Before Local:" + obj.localPosition.x);obj.Translate(-70f, 0f, 0f);Debug.Log("After Local:" + obj.l...
Unity

[Unity 2021]SVGを使用(Package Managerを使用しないでインストール)

やりたいことUnityでSVGを使用します。調べるとPackage Managerを使用してVector Graphicsをインストールすると出てきますが、私の環境(2021.3.4411 Personal)ではVector GraphicsがPackage Managerが表示されませんでした。この記事ではPackage Managerを使用せずにVector Graphicsをインストールする方法とCanvasで使用する方法を紹介します。インストールUnityのプロジェクト内のPackages/manifest.jsonを開きます。dependenciesのブロックに以下の行を追加します。...
Unity

[Unity]webGLでビルドしたとき起動しないときの対応

やりたいことUnityでwebGLでビルドして、htmlを開いたときにエラーが表示されて起動できなかった時の対策の覚書です。エラーと対策Failed to download fileエラーFailed to download file Build/buildtestweb.framework.js.unityweb. Loading web pages via a file:// URL without a web server is not supported by this browser. Please use a local development web server to host...
Unity

Unityプロジェクトをgitでバージョン管理

やりたいことUnityにはunity version controlというversion管理があるのですが使い慣れたgitを使ってバージョン管理を行います。gitの基本的な使用方法は省略します。運用方法リポジトリの作成リポジトリは通常の方法でローカルかサーバに作成します。プロジェクトの作成と最初のコミットUnityHubを使用してUnityのプロジェクトを任意のフォルダに作成します。下のページからUnity.gitignoreファイルをダウンロードします。ダウンロードしたUnity.gitignoreを.gitignoreにリネームして作成してプロジェクトのルートに保存します。(プロジェクトフ...