yotiky Tech Blog

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

Unity

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.1 VisualStudio:2019 Device:HoloLens2 手順 [Ctrl + Shift + B] で 「Build Settings」 画面を開く […

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」のキーで移動するサンプルスクリプト。 public class KeyMover : MonoBehaviour { public float moveSpeed = 1; // Update is called once per frame void Update() { if(Input.GetKey(KeyCode.W)) { transfo…

「ユニティちゃん」を利用する場合のライセンスの取り扱い

ガイドラインで概要を把握しましょう。最下部まで行くとそのままダウンロードできます。 unity-chan.com HPでの表示例を含めたライセンス表記の説明はこちら。 unity-chan.com お問い合わせに対する回答集であるFAQはわかりやすいので目を通すと良いでしょう…

Unity WebGL コンテンツをローカル実行する

Unity で WebGL ビルドした html ファイルを Chrome で開こうとすると、次のエラーメッセージが表示されます。 It seems your browser does not support running Unity WebGL content from file:// urls. Please upload it to an http server, or try a diff…

.gitignore ファイル のテンプレートを取得する

.gitignore ファイル のテンプレートを取得する方法を3つ紹介します。 1つは .NET 専用ですが。 github gibo dotnet github github Webページでリポジトリを作成する際にテンプレートから選択して追加することができます。こちらはリポジトリのルートのみに…

Unity (HoloLens) - MessagePack for C# の基本的な使い方

Unity (HoloLens) で使用するための MessagePack for C# のサンプルコード集です。 目次 目次 開発環境 導入 サンプル 基本 デバッグ向けの便利なメソッド 属性 インターフェイス Stream etc 実行 Generate Register 参考 開発環境 Unity : 2019.3.15f.1 Scr…

Unity (HoloLens) - Json シリアライザの基本的な使い方

Unity (HoloLens) で Json をパースするライブラリのサンプルコード集です。 目次 目次 概要 対象クラス 開発環境 導入 JsonUtility Json.NET (Newtonsoft.Json) Utf8Json サンプル JsonUtility Json.NET (Newtonsoft.Json) Utf8Json デプロイ Utf8Json OnPr…