yotiky Tech Blog

とあるエンジニアの備忘録

Unity

Unity - Addressables の更新チェックに関するメモ

検証環境 ビルドとキャッシュ catalog.hash crc 参考リンク 検証環境 Unity 2019.4.25f1 Addressables 1.18.4 Localization 1.0.0-pre.9 ビルドとキャッシュ アプリをビルドすると、StreamingAssets 配下に catalog.json と settings.json が生成される () s…

Unity - 設計・実装のコツ

アーキテクチャや設計パターンを始める前に。 リーダビリティを確保して保守性を高める。 想定読者 元スライド スライド一覧 おまけ ReactivePorperty AsyncLazy 補足 SerializeField でどこまで参照関係を明確にするか アプリの機能をどこで実装するか エン…

Unity - Addressable Assets System

目次 目次 検証環境 概要 インストール アセットを読み込む AssetDatabase を使って UnityEditor で読み込む Play Mode Script AssetBundle をローカルから読み込む AssetBundle をリモート(ローカルサーバー)から読み込む AssetBundle をリモート(Azure …

Unity - よく使うパッケージ

UPM manifest.json の dependencies に追加する。 UniRX "com.neuecc.unirx": "https://github.com/neuecc/UniRx.git?path=Assets/Plugins/UniRx/Scripts", UniTask "com.cysharp.unitask": "https://github.com/Cysharp/UniTask.git?path=src/UniTask/Asset…

Unity - TextMeshProで日本語を表示する

目次 目次 フォントのインポート Windows系 Meiryo UI Yu Gothic UI Google Fonts Fontworks M+ ライセンス Font Asset を作成 Font を使用 表示例 Windows系 Google Fonts Fontworks 参考 関連記事 フォントのインポート 使用する日本語フォントを準備し、U…

C# の新機能

目次 C# 4.0 C# 5.0 C# 6.0 C# 7.0 C# 7.1 C# 7.2 C# 7.3 C# 8.0 C# 9.0 Unity の対応表 Unity Runtime version (Equivalent) C# version Compiler 2017 .NET 3.5 C# 4.0 mcs (Mono) .NET 4.6 C# 6.0 mcs (Mono) 2018.1 / 2018.2 .NET 3.5 C# 4.0 mcs (Mono)…

Unity - スライダーでズームイン/ズームアウトする

対象のオブジェクトを中心に、スライダーの値でズームインしたりズームアウトするサンプルスクリプト。 スライダーの値に応じてカメラが移動する。 public class Zoomer: MonoBehaviour { public GameObject playerObject; public Slider zoomSlider; public…

Unity - スライダーで対象を中心にカメラを回転させる(三人称視点)

対象のGameObjectを中心にカメラをスライダーの値で回転(三人称視点)させるサンプルスクリプト。 回転可能な角度を設定して正面からの回転角度に制限を設けている。 public GameObject playerObject; public Slider rotationSlider; public float maxAngle…

HoloLens2 に FastEnum を導入する

追記 (2020/11/14) 検証環境 補足 導入 FastEnum MessagePack 追記 (2020/11/14) FastEnum 1.6.0 がリリースされました。 1.5.x では System.Runtime.CompilerServices.Unsafe は 4.7.1 以上が必要でしたが、1.6.0 では 4.5.0 以上になっており、要求される…

Unity Editor の MessagePack CodeGen が動かない原因と一時対処

原因 一時対処 参考 原因 最新の MessagePack for C# (執筆時のバージョンは 2.2.60 ) の MessagePack CodeGen ウィンドウでは、ジェネレートが動かなくなっています。中でdotnet tool コマンドを使っていますが、.NET Core ツールについては前回の記事を…

HoloLens2 で MagicOnion v3 を動かす

目次 目次 構築環境 補足 Unity のベース構築 gRPC のコード修正・ビルド Grpc.Core.dll grpc_csharp_ext.dll grpc_csharp_ext_dummy_stubs.c 動作確認 構築環境 MagicOnion.Client.Unity.unitypackage 3.0.12 MessagePack 2.2.60 MagicOnion.Hosting 3.0.13…

HoloLens2 + MRTK 2.5 プロジェクトの初期設定

新規プロジェクト作成時に行うミニマムなお決まりの手順、設定など。(Legacy XR版) 検証環境 手順 オプション 検証環境 Unity:2019.4.3f1 MRTK:2.5.3 VisualStudio:2019 Device:HoloLens2 開発環境に必要なモジュールは以下を参照。 HoloLens2 の開発…

Unity - スクリプトで LineRenderer を使って線を引く

var head = GameObject.CreatePrimitive(PrimitiveType.Sphere); head.transform.localScale = new Vector3(0.1f, 0.1f, 0.1f); head.transform.parent = transform; gazeLine = head.AddComponent<LineRenderer>(); gazeLine.material = new Material(Shader.Find("Sprite</linerenderer>…

Unity - Unityを外部プロセスとしてWPFでホストする(Unity as a Library)(2)

前回の記事で WPF で Unity をホストする実装例を紹介しました。 参考にさせて頂いた記事では、続きに Unity の起動画面がWindow全体に表示されてしまう問題を対処しています。 yotiky.hatenablog.com 手元でも同じように全体に表示されたため、続きのコード…

.NET - 子プロセスを確実に終了させる

実装例 こちらやここのコメント欄などが参考になりそうです。今回はQiitaの記事のコードを使わせて頂きました。 public class JobObject : IDisposable { public static JobObject CreateAsKillOnJobClose() { var job = new JobObject(); var jobInfo = new…

Unity - アプリ終了時に非同期処理を実行して終了する

環境 Unity 2019.4.3f1 実装例 終了のイベントをフックして、非同期な後処理を呼びつつイベント自体はキャンセルし、後処理が終わったらそのままアプリが終了するようにします。 void Start() { Application.wantsToQuit += Application_wantsToQuit; } priv…

Unity - Unityを外部プロセスとしてWPFでホストする(Unity as a Library)

Unity 2019.3以降、「Unity as a Library」というAndroidやiOSのネイティブアプリに、Unityで作成したアプリをライブラリとして埋め込む機能が提供されています。 この中にはWindowsアプリケーションも含まれています。Windows では以下の3つの方法が紹介さ…

.NET - WebGLをWPFでホストする(WebView2 で Unity as a Library)

Unity 2019.3以降、「Unity as a Library」というAndroidやiOSのネイティブアプリに、Unityで作成したアプリをライブラリとして埋め込む機能が提供されています。 unity.com WebGL 自体はこの中に含まれないのですが、検証ついでに Unity で生成した WebGL …

Unity - System.Threading.Channels で生産者/消費者パターンを利用する

今回は、System.Threading.Channels を Unity に導入した実装例です。 次の記事を参考にさせて頂きました。 qiita.com 前回の記事もご参考までに。 Unity - UniTask の Channel で生産者/消費者パターンを利用する - yotiky Tech Blog 検証環境 以下の環境で…

Unity - UniTask の Channel で生産者/消費者パターンを利用する

System.Threading.Channels の記事を拝見し、Unity では UniTask に Channel があると教えてもらったので試してみました。 非同期キューイングな処理を使いたいシーンはよくあるので、知っておくと便利です。 qiita.com System.Threading.Channels を導入す…

.NET - Ipc を使ったプロセス間通信

Windows オペレーティング システムのプロセス間通信 (IPC) を使う場合、System.Runtime.Remoting.Channels.Ipc 名前空間 を利用します。 ただし、適用対象が .NET Framework のみ (現在 2.0~4.8) であり、.NET Core や Unity などでは使えないため、参考リ…

.NET - NamedPipe(名前付きパイプ)を使ったプロセス間通信

今回は名前付きパイプの実装例です。 サンプルは1つ目の Console アプリで入力した文字列を、2つ目の Console アプリ、WPF アプリ、Unity でそれぞれ読み取って表示するものになります。 パイプはサーバー側で同じパイプ名を共有するサーバーインスタンスの…

Unity - UnityをUWPでホストする(Unity as a Library)

Unity 2019.3以降、「Unity as a Library」というAndroidやiOSのネイティブアプリに、Unityで作成したアプリをライブラリとして埋め込む機能が提供されています。 この中にはWindowsアプリケーションも含まれています。Windows では以下の3つの方法が紹介さ…

.NET - MemoryMappedFile を使ったプロセス間通信 (MessagePack for C# 編)

前回の記事で MemoryMappedFile を使ったプロセス間通信の基本的な使い方を紹介しました。今回は MessagePack for C# を使ってシリアライズしたデータのやり取りについてです。 MessagePack for C# の使い方についてはこちらの記事も参考にしてみてください…

.NET - MemoryMappedFile を使ったプロセス間通信

別々のプロセスで起動したアプリケーションやライブラリで相互に通信する方法のサンプルコードです。今回は共有メモリ、MemoryMappedFile を使います。 .NET Framework 4.0 以降に導入された技術のようです。 今回のサンプルは1つ目の Console アプリで入力…

Unity - マウスドラッグで対象を中心にカメラを回転させる(三人称視点)

目次 目次 オブジェクトを中心にカメラを回転させる 動くオブジェクトに追従する 回転可能な角度を制限する オブジェクトを中心にカメラを回転させる 対象のGameObjectを中心にカメラをマウスドラッグで回転(三人称視点)させるサンプルスクリプト。 public…

Unity - マウスドラッグでカメラを回転させる(一人称視点)

カメラをマウスドラッグで回転(一人称視点)させるサンプルスクリプト。 public class CameraRotator1stPersonPov : MonoBehaviour { public Vector2 rotationSpeed = new Vector2(0.1f, 0.1f); public bool reverse; private Camera mainCamera; private V…

Unity - マウスドラッグでオブジェクトを回転させる

対象のオブジェクトをドラッグで回転させるサンプルスクリプト。 public class ObjectRotator : MonoBehaviour { public GameObject targetObject; public Vector2 rotationSpeed = new Vector2(0.1f, 0.2f); public bool reverse; public float zoomSpeed =…

Unity - マウスホイールでズームイン/ズームアウトする

対象のオブジェクトをマウスホイールでズームインしたりズームアウトするサンプルスクリプト。 カメラを移動する場合。 public class Zoomer: MonoBehaviour { public float zoomSpeed = 1; private Camera mainCamera; void Start() { mainCamera = Camera.…

Unity - キー操作でオブジェクトを移動する

アタッチした GameObject をキーボードの「WSAD」のキーで移動するサンプルスクリプト。 上下移動と上下左右に回転できるように修正。(2021/12/02) public class KeyMover : MonoBehaviour { public float moveSpeed = 1; public float rotateSpeed = 35; …