土屋つかさの技術ブログは今か無しか

土屋つかさが主にプログラミングについて語るブログです。

#unity UIから「Save As...」ボタンを外したらUnityエディタがクラッシュするようになった話(TextMeshPro Deep Dive #4)

年の瀬です。皆様いかがお過ごしでしょうか。2024年も大変お世話になりました。来年もよろしくお願いします。 土屋はこの年末の忙しい最中、「Unityエディタ拡張の自作ツールで「Save As...」ボタンを削除したら特定タイミングでUnityエディタがクラッシ…

#unity TextMeshPro内の低レイヤ処理クラスFontEngineの隠しメソッドにリフレクションでアクセスする(TextMeshPro Deep Dive #3)

この記事はUnityアドベントカレンダー2024(シリーズ3)12日目の記事です。空いてたので埋めさせていただきました。 qiita.com 今回の記事はこちらのエントリの内容をベースにした物になります。 zenn.dev TextMeshProの内部処理 TextMeshPro(以下TMP)…

#unity Unity6+VisualStudio2022でNuGetパッケージをインストールする入門

この記事はUnityアドベントカレンダー8日目の記事です。 qiita.com NuGetの使い方を学ぼう Visual Studioで開発している方は誰でもお世話になっているであろうNuGetなんですが、UnityでNuGetパッケージを使用する場合、通常とは異なる導入手順が必要です。 …

C#でデリゲート型を使ってメソッドディスパッチを実装する

この記事は土屋つかさアドベントカレンダーの3日目です。嘘です。今年はACに一個も参加してなかいので言いたくなっただけです。 今回はC#でメソッドディスパッチをする方法の話。土屋がコード書いてる時に必要になったんですが、ググッても上手く見つか…

#unity ツカサ式スタック型ステートマシンT2sFSM(その3)

以前紹介したステートマシンの少しだけ改良したので、その紹介記事になります。以前の記事はこちら。 someiyoshino.info someiyoshino.info 前口上 ご存知の方も多いでしょうが、土屋はライフワーク的にテキスト描画(というかADV)の汎用エンジンを作っ…

#unity C#シリアライザMemoryPackを使いたい(1)パッケージインストールの手順

MemoryPackは、Neueccさんが開発し、CySharpからリリースされている、シリアライザーと呼ばれる機能を提供するOSSライブラリです。 github.com シリアライザーは、データを永続化(シリアライズ)する為の物で、インスタンスが持つデータをバイナリデータ…

#UEFN #Verse 作用指定子(effect specifier)のv30.0新仕様について解説

Verseでは、ライブラリの実装者が各APIが持つ制約を明示する為に、関数名に「作用指定子(effect specifier)」を付与できます。これによって、その関数が副作用を持つかどうかや、環境依存性があるどうかなどをインターフェイスレベルで規定できます。 …

#UEFN #Verse Verse言語では比較式が評価されると「左辺の値」を返す(マジか!でも妥当!)

公式フォーラムを眺めていたら、Verse本の修正が必要な事象に出会いました。「比較の戻り値」についてです。 一般的な言語では、比較式は真偽型(true/false)を返します。 しかし、Verseでは比較式は「左辺の値」を返します。 ……マジかよ!!! 公式ドキュ…

#UEFN #Verse 失敗許容関数内では明示的なreturnが出来ないルールについて

現在、5月25日から始まる技術書典に向けてVerse本の紙版リリースの準備を進めているのですが、無限に続く寒暖差のせいで体調が思わしくなくピンチでやばばです。頑張ります。 今回はそのVerse本に追記しようと思っているネタです。 問題編 キッカケは、ご…

#UEFN #Verse 3/28の"Ask Epic: Verse"で面白かった回答ピックアップ(延長戦1:型システム編)

Ask Epic:Verse回答祭りの延長戦です。今回紹介する2つの質問は「この機能は採用予定がありますか?」「ないです。何故なら……」という物で、コーディングにおいて直接役に立つ物ではありません。とはいえ、どちらの質問もVerseの型システムに深く関わる物で…

#UEFN #Verse 3/28の"Ask Epic: Verse"で面白かった回答ピックアップ(その4)

Ask Epic:Verse回答祭り第4回(完結編)です。今回はVerseの型システムに関係する質問がメインです。 今回まとめた分はマニアックな質問が多く、土屋自身がついていけてない物もありました(結果誤訳してる可能性があります)。多くのユーザ-がVerseの言語…

#UEFN #Verse 3/28の"Ask Epic: Verse"で面白かった回答ピックアップ(その3)

第3回です。これまでもマニアックな質問が多かったかもしれませんが、ここからは更に多くなっていきます。 SubscribeとAwait(内部スタッフの好みはどっち?) https://forums.unrealengine.com/t/ask-epic-verse-march-28-10-00-am-et/1765393/96?u=t.tuti…

#UEFN #Verse 3/28の"Ask Epic: Verse"で面白かった回答ピックアップ(その2)

Ask Epic 翻訳祭り第2回です。今回は「これは島クリエイトやるなら把握して置いた方がよさげ」という物をピックアップしています。 HTTPリクエストAPIの採用予定は無い(マジか!) https://forums.unrealengine.com/t/ask-epic-verse-march-28-10-00-am-et…

#UEFN #Verse 3/28の"Ask Epic: Verse"で面白かった回答ピックアップ(その1)

UEFNの公式フォーラムでは、ユーザーからテーマに沿った質問を募集し、それに内部開発スタッフが回答する"Ask Epic"という不定期イベントが開催されています。直近の3月28日に行われたAsk EpicのテーマはVerseでした。 forums.unrealengine.com Verse…

#UEFN #Vesre #Verselang v29.00に追加された「永続化データ(Persistable Data)」機能について解説

v29.00から永続化データ(Persistable Data)についての機能が追加されました。 forums.unrealengine.com 永続化データは、セッションを超えてデータを保持(≒永続化)できる変数をverse上で管理できるようにする物です。 永続化データを利用するにはそれな…

#UEFN #Verse v28.10から、set式の右辺に失敗許容式を記述すると警告が出るようになった件についての個人的な考察

近況報告 年末から2月いっぱいくらいまで非常に忙しく、また連続して体調を崩していた事もあり、UEFNどころかFortniteを起動する余裕もありませんでした。すっかり浦島太郎状態ですが、ゆるゆるとUEFNの活動も再開したいと思っています。ただ、Unityの活動…

#Unity ゲームプログラミングにおいて例外処理は必要か?

導入 TwitterのTLでヤスハラユウジさんのポッドキャストが流れてきたので聞いてみました。 voicy.jp 「ゲームプログラミングでは例外処理の実装は不要なのでは?」というお題で、興味深く拝聴しました。7分弱の音源なのでみなさんも是非お聞きください。 内…

#unity #Rx R3.Unit型について

前回記事の補足です。さきにこちらを読んだ方がわかりやすいかも。 前回記事はこちら。 someiyoshino.info R3のイベントストリームを生成する時は大抵こういうコードを書きます(念のために言っておくと、実際にはこの一行だけを書く事は無いと思います)。 …

#unity #Rx R3でダブルクリック検出処理を実装する

Rxの勉強を兼ねて、UniRxで書かれたコードをR3に移植してみることにしました。 対象のコードは、こちらのサイトのダブルクリック検出コードを参考にさせていただきました。 qiita.com Rxやジェネリックに慣れてない人向けに丁寧に解説しています(そもそも自…

#unity SDFフォントデータによる文字描画実装(TextMeshPro Deep Dive #2)

初めに 第1回ではSDFフォントのデータを使って文字描画を実現するメカニズムについて解説しました。 someiyoshino.info 今回は実際に文字描画を行うシェーダーコードのロジックを解説します。SDFフォントのデータを元に、文字にアウトラインを設定したり…

「Rx(Reactive Extensions)はイベントストリームが主体」と教えてもらった時の会話

「Rx(Reactive Extensions)」と呼ばれる、observerパターン*1を非同期的/LINQ的に使用できるライブラリ(というかフレームワークというか)があります。 Rxは非常に高機能で完成度が高く、様々な言語に移植されているのですが、土屋にはこれまでイマイチ…

#unity SDFフォントデータによる文字描画実装(TextMeshPro Deep Dive #1)

去年の夏頃にTextMeshProの実装、中でもSDF形式のフォントデータを使った文字描画処理について延々解析していました。その頃に得た知見を何回かに分けて書いて行きたいと思います。 今回は、そもそもSDFフォントデータとはどういう物で、どういう仕組…

フォートナイト&メタバース記述プログラミング言語「Verse」の設計思想を読み解く記事をzennで書いています

フォートナイト&メタバース記述プログラミング言語「Verse」の設計思想を読み解く記事をzennで書いています。 こちらです。よろしければどうぞ。まだ暫く続く予定。 zenn.dev どうしてVerse言語の記事を書き始めたのか dev.epicgames.comさきに言っておくと…

PowerPointで正円の円弧の矢印を描く

地味なTIPSです。 ブログ記事に図が必要になった時、土屋は「PowerPointで作図」→「Snipping Tool*1」で切り取ってファイルに保存」という手順で作成しています。 この時、「正円の円弧の矢印」が欲しい時があります。例えばこんなの。 上図では、原点を…

#unity Timelineからシグナルを使ってAnimationController制御する

この記事は「Unity Advent Calendar 2022 その1」の9日目の記事になります。 qiita.com 前日は@YamadaGamesさんの「Unity Cinemachine VirtualCameraを知らない人向けだけの紹介」でした。 qiita.com 今回は、スクリプトを書かずに、Timelineからシグナル…

新海誠監督の「天気の子」での表現に対する自覚について(の、2019年公開当時に書いたまま放置してた未完成テキスト)

2022年11月12日に公開2日目の「すずめの戸締まり」を鑑賞してきました。響きすぎて終盤でボロ泣きしました。人によってはとても苦しい映画かもしれないけど、出来れば前情報無しで見に行って欲しい作品です。 映画を観ていて、以前から思っていた新…

#unity ジンバルロックをゼロから理解する

3Dオブジェクトの回転についてネットで調べると、決まって「ジンバルロック」という用語と、その説明にぶつかります。この「ジンバルロック」がどういう物なのか、長い事ピンと来ていなかったのですが、ようやく腑に落ちたのでまとめておきます。 以下、土…

#unity CSVファイルを読み込むシンプルな汎用ロジックを書いた

csvファイルをUnityで読み込む時、毎回、一部だけ異なる似たようなコードを書いてしまいます。その頻出処理をイテレーター化したので紹介します。 Unityでcsvファイルを操作する動機 ゲームで使うデータ、例えばアイテムやモンスターなどのデータは、1個当…

#unity ツカサ式スタック型ステートマシンT2sFSM(その2)

前回、ツカサ式ステートマシンT2sFSMを紹介しました。 someiyoshino.info 前回の実装はテキスト描画フレームワークの設計中に作った物だったのですが、その後の実装過程で、より分かりやすくかつ安全に使えるようにちょこちょこ改修を続けています。今回は主…

#unity 小ネタ:RectTransform.sizeDeltaの初期値について

ここ1週間くらいcanvasの挙動に嵌まっていて、ようやく解決出来たのでメモ。結果的には自分の単純な見落としで反省しました。 趣味でテキストレイヤフレームワークを作っています(そんな趣味ある?*1)。canvas上で動作する物で、1文字ずつオブジェクトを…