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

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

#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 深掘りTextMeshPro:SDFフォントデータによる文字描画実装(第2回:シェーダーコード)

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

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

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

#unity 深掘りTextMeshPro:SDFフォントデータによる文字描画実装(第1回:SDFの仕組み)

去年の夏頃に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文字ずつオブジェクトを…

#unity ツカサ式スタック型ステートマシンの紹介(ゲーム向きのステートマシン実装)

現在、テキストウィンドウ描画ライブラリを作ってまして*1、その過程でスタック型のステートマシンを実装しました。このステートマシンは土屋が頻繁に使うロジックで、仲間内では「ツカサ式(つかさしき)」と呼んでいます。今回はこのツカサ式ステートマシ…

#unity 小ネタ:Explicitレイアウトミスの話

ちょっと試したい事があってコードを書いていたら、普通に実行した時は問題無く動くのに、Visual Studioでアタッチしている時だけUnityが100%実行時エラーを出して落ちる(!)という、出来れば遭遇したくない事態に陥りました。 最初は意味がわからなす…

#unity 小ネタ:実行中にマテリアルを複製する

ネットで検索してスパッと記事が見つけられなかったのでメモっておく小ネタシリーズ。 「実行中にマテリアルを生成したい」「可能ならアセットから読み込んだマテリアルをベースに一時的なコピーを作りたい」という状況に遭遇しました。 なんでコピーを作り…

#Unity 何故PlayModeに入った時にOnValidate()が2回呼ばれるのか問題(その2:完結編)

前回の記事の続きです。 someiyoshino.info OnValidate()タイミングにRectTransform.setDelta()を更新するコードを実装した所、Edit ModeからPlay Modeに移行した時(以下これを「Enter Play Mode時」と呼びます)にNull参照例外が発生してしまうという話で…

#Unity 何故PlayModeに入った時にOnValidate()が2回呼ばれるのか問題(その1)

現在Canvas用のコンポーネントを作っていて、その最中、Unity初期化時のMonoBehaviour.OnValidate()の挙動に悩まされまして、折角なのでちゃんと調べて記事にしました。 今回は前半戦で、実は表題にした「何故OnValidate()は2回呼ばれるのか」に到達してい…

「node.jsにtextlintをインストールして」「ルールをtypescriptで記述して」「VSCode上でステップ実行でデバッグしたい」をする

近年の大規模プログラム開発環境では、ソースコードを共有する前にlinterと呼ばれるツールを使ってコード検証をするのが一般的です。linterでは決められたコーディングルールに沿っているかについて、コンパイラよりも厳格なチェックを行い、場合によっては…

メモ:gitで"fatal: loose object ~ in corrupt"エラーが出た(Dropbox絡み)

git

最近、ソースコードをローカルでgit管理したいと思い、Dropbox内にリモートリポジトリを作ったのですが、別のマシンからそのリモートリポジトリを取得してブランチ切り替えしようとしたら以下のエラーが出ました。 「ローカルリポジトリ内のblobファイル(05…

#unity gitから初めて取得したUnityプロジェクトを実行する手順

こういうのって調べればどこかに書いてあるんだろうけどもすぐ見つからなかったのでメモとして。 .gitignoreファイルの話 Unityのプロジェクトをgit(GitHub)のリモートリポジトリで管理する時、登録するべきでないファイルが色々あります。例えばLibraryフォ…

#unity Microsoft.Unity.Analyzersを制御する

おかげさまでシェーダー本5が無事リリースできました。BOOTHと技術書典オンラインマーケットで頒布中なので、よろしくご検討下さい。 s-games.booth.pmtechbookfest.org シェーダー本5の紙販は、9月に開催される技術書典13に合わせて頒布する予定です。…

Unityシェーダープログラミングの教科書5 SRP[2]UniversalRP URP拡張カメラ/HDR/ポストプロセス編

告知です。新刊同人誌「Unityシェーダープログラミングの教科書5 SRP[2]UniversalRP URP拡張カメラ/HDR/ポストプロセス編」のPDF版を、2022年7月4日にBOOTHさんに登録しました。どうぞよろしくお願いします。 s-games.booth.pm 物理…

#unity テクスチャFilterModeのPoint/Bilinear/Trilinearの違いを確認する

テクスチャのfilterModeプロパティを介して、ピクセルをサンプリングする時の補間方式をFilterMode列挙体から設定できます。 docs.unity3d.com FilterMode列挙体 Point(No Filter) 補間しない Bilinear 隣接するピクセルとブレンドする Trilinear Bilinearに…

#unity 公式のPackageをカスタム化する手順の解説

この記事はUnityアドベントカレンダー2021part3の3日目の記事です。記事を書いたのもアップしたのも12月26日ですが、アドカレpart3がスカスカなのが寂しいので強引に入れさせてもらいました。 qiita.com ちなみに、part1の3日目も土屋が書いてますので…

#unity TimeLineにMarkerを打ち込んでオブジェクトにパラメータを送信する

この記事はUnityアドベントカレンダー2021part1の3日目の記事です。qiita.com 前日は志麻ひぬこさんでした。 shirokurohitsuji.studio この記事ではTimeLineで任意のパラメータをオブジェクトに渡せる機能「Marker」について解説します。 きっかけ 知り合い…

#unity URP12.0からForwardRendererクラスがUniversalRendererクラスにリネームされた(マジか)

いろんなことを同時並行していてなかなかまとまった記事を書けないんですが、今日調べ物してて驚かされたことを共有しておきます。 URPにおけるデフォルトのレンダラー実装であるForwardRendererという重要なクラスがあるんですが、これがURP12.0からUnivers…

#unity インポートしたキャラモデルにモーションを流したら関節がくにゃった時の対処法(補助ボーンとRotation Constraintコンポーネントの話)

はじめに 今回は「補助ボーン」について。キャラモデルのfbxデータをunityでインポートした時に、補助ボーンが原因で肘や膝の関節がぐにゃってしまうことがあります。その原因と対処方法を解説します。 例によって間違いを書いてる所もあるかと思うので、気…