UnityとゲームAIと将棋

Unity、Pythonを中心にゲーム開発やゲームAI開発の技術メモ等、たまに将棋も

週末メモ(2024/5/18)

メモ

今週読んだ記事や知ったことのメモ。

UnityEditor.ShortcutManagementでショートカット関連の機能が扱える

using UnityEditor.ShortcutManagement;

UI Toolkit使用時のドラッグ&ドロップイベント

【Unity】【UI Toolkit】Unityエディタ上でドラッグ&ドロップをハンドリングするイベントまとめ - LIGHT11

DragEnterEvent: ドラッグされた状態のカーソルがUIの領域に入ってきた時のイベント
DragLeaveEvent: ドラッグされた状態のカーソルがUIの領域から出た時のイベント
DragUpdatedEvent: ドラッグされた状態のカーソルがUIの領域に入っている間呼ばれる
DragPerformEvent: ドラッグされたものがUIの領域上でドロップされたときに呼ばれる
DragExitedEvent: ドラッグ&ドロップの処理が終わった時に呼ばれるイベント

Unity Sentisの入れ方

2024/05/18現在だと下記のようにmanifest.jsonへ記載する必要がある

"com.unity.sentis": "1.4.0-pre.3",

UI開発のTips

【Unity】失敗しないUI開発9つのTips【初心者エンジニア向け】 - 渋谷ほととぎす通信

文字列のインターンプール

C#ではstring型変数の文字列変更があると新しいインスタンスが作られる。
同じ文字列なら同じインスタンスを参照するため仕組みがインターンプール。

【C#】文字列のインターン化 | わっふるらんど

【C#】インターンプールを用いてstring生成によるヒープのメモリ確保を防ぐ方法(メモリを占有しつづけるのでそこは注意) - はなちるのマイノート

UI Toolkit でコンテキストメニュー(右クリック)を使う方法

【Unity】【UI Toolkit】Unity EditorでContextual Menu(右クリックメニュー)を使う - LIGHT11

コンテキストメニューイベント - Unity マニュアル

UIToolkitでのコピペハンドリング

【Unity】【UI Toolkit】コピー&ペーストなどのショートカットをハンドリングするCommand Eventの使い方 - LIGHT11

スプライトの変更検知

SpriteRenderer.RegisterSpriteChangeCallback でスプライトが変更されたことを検知できる - コガネブログ

ステンシルバッファ

1pixelごとにpixelを描画するか否かの情報を保存する領域。
マスク表現を行うのに使われるらしい。

TimeProviderとベンチマークテスト

neue cc - R3のコードから見るC#パフォーマンス最適化技法実例とTimeProviderについて

時間の抽象化を行う。二点間の時間算出にDateTimeではなくTimestampを使う。 TimeProvider クラス (System) | Microsoft Learn

ベンチマークテストにStopWatchは使わない。 GitHub - dotnet/BenchmarkDotNet: Powerful .NET library for benchmarking

画面の変更前後の解像度取得

Display.main.systemWidth; //変更前
Display.main.renderingWidth; //変更後

メッセージングシステム

オブジェクト間でデータの送受信を行う仕組み。
UniRx,MessagePipe,VitalRouter等。

Unity Timeline

Timelineでゲームスタート演出

Timeline エディター拡張入門 - Speaker Deck

Unity Muse

All Unity Muse AI capabilities are now available in the Editor, plus 3 new updates | Unity Blog