yotiky Tech Blog

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

2020-08-01から1ヶ月間の記事一覧

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…

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

環境 .NET Core 3.1 実装例 終了のイベントをフックして、非同期な後処理を呼びつつイベント自体はキャンセルし、後処理が終わったらそのままアプリが終了するようにします。 public MainWindow() { Closing += MainWindow_Closing; } private bool isCalled…

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 検証環境 以下の環境で…

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

こちらの記事の写経です。自分用ですので元ページを参照されたし。 qiita.com 実装例 生産者 1 : 消費者 1 static async Task Single() { var channel = Channel.CreateUnbounded<int>( new UnboundedChannelOptions { SingleReader = true, SingleWriter = true,</int>…

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; …