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

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

C#

#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回呼ばれるのか」に到達してい…

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

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

#unity VContainerを使ってDI(Dependency Injection)コンテナについて最低限理解する

「DIコンテナ」という言葉を聞いたことがあっても、それがなにをする物で、どういう風に使うのかがピンと来ない人は多いかと思います(土屋もそうでした)。この記事では、Unity用DIコンテナフレームワーク「VContainer」を最小限のサンプルコードで動作さ…

ダミーボタンUI素材ジェネレーターを作りたかった

ゲームに限らないんですが、メニュー画面を実装する際、ひとまず仮で使うボタン画像の素材が欲しいという時がよくあります(……ありますよね?)。プロトタイプ制作時とか、まだレイアウトの仕様が決まっていないので各ボタンのサイズが決まっていないのだけ…

#unity (C#)でFlatBuffersを使い倒す(3) スキーマファイルからコードジェネレートする

FlatBuffersを使う流れ FlatBuffersを使用するには、以下の3つの手順を経る事になります。 スキーマファイルを作り、flatc.exeでコードジェネレートする データをバイナリ配列にシリアライズしてファイルに保存する。 ファイルからバイナリ配列を読み込みデ…

#unity (C#)でFlatBuffersを使い倒す(2) FlatBuffersの導入手順

前回、ゲームで用いる数値データを管理する手段として一般的な、バイナリデータを構造体配列にマッピングする手法について解説しました。今回からは、FlatBuffersというフレームワークを使って、Unity(C#)上でシリアライズ/デシリアライズ処理を実装してい…

#unity (C#)でFlatBuffersを使い倒す(1) ゲーム開発時に数値系データを外部バイナリファイルで管理する方法

前回の記事でJSONデータを構造体配列に読み込むことができたので、次はこれをバイナリデータとしてシリアライズ/デシアライズする方法を検証します。どちらかと言えばここからが本番です。 しばらくはFlatBuffersというライブラリの挙動を検証します。実際…

#Unity JsonUtiltiyでモンスターデータのJSONファイルを構造体配列に読み込む

ゲームでは大量の(本当に大量の)数値データを管理する必要があり、そのデータをどのように管理するかは、ゲーム開発では常に重要なテーマとなります。ここで言う数値データとは、武器のデータやモンスターのデータ(構造体)などのことです。これらが容易…

Unityシェーダープログラミングの教科書3 ライティング&GI(大域照明)解説編

告知です。新刊同人誌「Unityシェーダープログラミングの教科書3 ライティング&GI(大域照明)解説編」のPDF版を、BOOTHさんに登録しました。 s-games.booth.pm また、本書の物理書籍版を、4月14日(日)に池袋で開催される技術書典6で頒布…

Utf8JsonをUnityで使ってみる(2)

前回ドキュメントから適当に拾ったデシアライズのサンプルコードがdynamic型を使うことが前提になっていてどうなんだろうと思いましたが、単に対象のJSONデータの構造が未知の場合にはdynamicを使うことになるという事のようです(そりゃそうだ。rubyに慣れ…

Utf8JsonをUnityで使ってみる(1)

(以下、スクショのスケールやトリミングができてないんですが、面倒なのでいつかやるかも、くらい。あとごめん、コードは微妙に実際に使ったものと違うのでそのままでは動かないかも。これは後で確認します) 司エンジン(土屋が開発しているコード注入式ス…

ANTLR4をVisualStudio上で使う際の注意点

C#

tsukasaスクリプトをC#コードに変換するトランスパイラを作っています。当初はrubyのparsletで書こうと思っていたのですが、parsletが気軽に動かせる代わりに字句解析器と構文解析器が分離していない点や、C#のプロジェクトに統合できない点から中止し、ANTL…