ノートの端の書き残し

UnityやらC#やら。設計が得意かもしれない。

UnityのAnimationの管理はビヘイビアツリーが便利かもしれない

UnityのAnimatorは使いづらい Unityでアニメーションの遷移とかの管理、何を使っていますか? 公式はAnimatorControllerを使うように言ってきますし、Unity初心者講座とか見てもそう言ってます。 が、アニメーションが4つ5つ出てきたあたりから管理が怪しく…

AssetBundleを読み込む手段 メモリの使用量について

Addressable Asset Systemをそろそろ理解したいのだが、その前にAssetBundleのベストプラクティスを考える前提知識を整える必要がある。 AssetBundleにはいくつか利用方法(読み込み方法)があるようだが、それぞれ特徴があるようなので確かめてみる。 Asset…

命名の話

与太話 .NETのクラスライブラリ設計を読みました。 www.amazon.co.jp これは改訂版で、僕は改訂版で初めて読みました。 改訂前の本は10年ほど前に出ているようで、若干古い言及もあるのですが、良い本でした。 すごいテクニックが沢山! というのではなく、…

SOLID原則の話

SOLID原則 ja.wikipedia.org オブジェクト指向プログラミングにおいて重要な5つの原則をまとめて言ってみたもの。 S = 単一責任の原則 O = 開放閉鎖の原則 L = リスコフの置換原則 I = インターフェース分離の原則 D = 依存性逆転の原則 そんなの知ってるよ…

全人類が待ってたUnity公式多言語対応パッケージ

Unity公式ローカライズ用パッケージが 出たぁ~~~!!(結構前) www.youtube.com あんまり個人製作でローカライズはしないと思うんですが、仕事だとかなりありがたい。 (ボタンのラベルとか、ロジックにな~んにも関係無いテキスト表示をコードで制御した…

List, Array, ForEachの速度比較(BenchmarkDotNetで遊ぶ)

List.ForEach()よりはforeachループ、 Listのforeachループよりはforループ、 foreach回すだけならToListしなくても、 といったことは知ってますが、実際のところどのくらいどれが有利なの?というのをちゃんと知っておかないと、他人に説明できなくて困る。…

DIContainerとMessagePipeでできる設計の話

まだ全然調査しきれてないので、ちょっと触った感じ、こういう認識でいいのかなぁ、というお話です。 VContainerについて github.com light11.hatenadiary.com - VContainerとは、導入しやすい、わかりやすいDIコンテナです。 - DIコンテナとは、色んなとこ…

UIElementsとUIBuilder

UIElementsとUIBuilderについて まずはUIElementsとUIBuilderについて軽く触れておきます。 Unity2019.1から新しく導入されたUIElementsについて。 簡単に使い方やどんなところが良さそうなどメモっておこうと思います。 UIElementsのいいところ 見た目をす…

SerializeReferenceでシリアライズしたときyamlファイルはどうなってるのか

先日投稿いたしました、こちらの記事の補足、というか余談です。 nigiri.hatenablog.com Unityのアセット、シーンやプレハブ、ScriptableObjectはyamlファイルとして保存されています。 SerializeReferenceを用いた場合、yamlファイルはどうなっているのでし…

SerializeReferenceとSubclassSelectorがすごい便利

Unity2019.3から使用可能なSerializeReferenceと、 docs.unity3d.com 下記で公開くださっているSubclassSelectorがすっごい便利でしたので布教したくなりました。 github.com SerializeReferenceについても素晴らしく丁寧な説明をしてくださっています。 lig…

【Unity】transform.positionのメンバ変数を直接変更できない理由

小ネタです。(言語をちゃんと理解してる人には当たり前の話です。) transform.position.x = 1f; Unityを使い始めの頃、だれしもこんなコードを書いたことと思います。 そしてエディタに怒られたことでしょう。 これを解決するために、 var newVec = new Vect…

【Unity】UnityEventのRemoveAllListenersはインスペクタから登録したコールバックを削除しない

小ネタです。 [SerializeField] private Button button; button.onClick.AddListener(callback); ButtonのonClickにはスクリプトからコールバックを登録できます。 そして、 button.onClick.RemoveAllListeners(); スクリプトから、登録したコールバックを削…

Unityレイマーチングでメタボール

簡単にレイマーチングのやり方を学んだので、試してみるのに丁度よさそうなメタボールを書いてみました。 参考にしたのはこの2つのページです。 techblog.kayac.com yagiri000.hatenablog.com 3D化しただけです。 うーん…… 何かに使える気はしないけど楽しい…

【C#】【リフレクション】任意の型のインスタンスを文字列から生成する

C#

MyClassというクラスがあったとします。 普通、MyClassのインスタンスを生成したければこうです。 MyClass instance = new MyClass(); さて、C#は型がガッチリ決まっているのが素晴らしいところだとは思うのですが、それが困るケースもやはりあります。 他の…

RPGでよくある画面がパリーンって割れて戦闘シーンに入るやつのシェーダの解説

すごくジオメトリシェーダのサンプルっぽいものができました。 まずジオメトリシェーダの説明をします。 Wikipedia曰く、ジオメトリシェーダとは 頂点シェーダーの後に実行され、プリミティブ全体または隣接したプリミティブの情報を持つプリミティブを入力…

RPGでよくある画面がパリーンって割れて戦闘シーンに入るやつのシェーダ

シェーダで実装できたー! この動画は単なるPlaneを割ってるだけですが、画面遷移時にRenderTextureを使ってPlaneのテクスチャとしてその瞬間を張り付けて割ってやれば完成なんじゃないかと思います。 今度コード上げます。 人様に見せられるコードにしてか…

シェーダのお勉強、基礎まとめ

Unityでのシェーダを勉強中なので、備忘録も含めて学んだことのメモです。 シェーダは何から勉強したらいいのかわからないとよく言われ、事実僕もちょっと前まで何の知識も無かったので、そこからどうやって勉強したのかとか、初心者目線で書ければいいかな…

シェーダのお勉強

シェーダを触ってみたかったので簡単に勉強してみました。 その過程でとても参考になったページがこちら 3Dメイン nn-hokuson.hatenablog.com 2Dメイン docs.google.com シェーダは見た目のお話なので、やっぱり実際に動かしてみるのが楽しい。 これらは実サ…

UnityのVR開発に手を付けたら脱線した

さて、僕はUnityを仕事で使っているのである程度扱うことができます。 さらにSteamでVRゲームをするためにHTC Viveを持っています。 となれば自分でもちょっと作ってみたいなぁと思うのは必至。 SteamVR Pluginを導入し assetstore.unity.com とりあえずVR用…

Unityでアプリの容量を小さくする設定の罠

UnityのBuildSettingを見るとCompressionMethodというものがあります。 これはアプリに含まれるリソースを圧縮してくれる設定で、配信できるサイズが制限されているスマートフォン用アプリだとありがたい設定、のように思います。 が、実はここには罠があっ…

SpriteAtlasをコード上で編集する

Unity2017から導入されたSpriteAtlasという仕組み。 これは、複数の画像を一つの大きな画像にまとめて、描画命令を少なくしてパフォーマンスに貢献するための仕組みです。 詳しくはこれらを読むとわかりやすい。かも。 tsubakit1.hateblo.jp kan-kikuchi.hat…

簡単めな記事を頻度上げて投稿したいお気持ち

慣れないうちは技術ブログっぽいことを目指しても難しいなぁと思う今日この頃。 2,3本、実用できなくもないものを上げましたが、書くのに想像以上の時間がかかってしまっています。 コンスタントに更新してきたい気持ちがあるので、これからは簡単めな記事に…

UnityでGUIDをいじって楽する

Unityの適当なシーン(.unity)やプレハブをテキストで開いてみると、 m_Script: {fileID: 何らかの数字列, guid: 何らかの文字列, type: 3} こんな行が見つかるはずです。 「テキストファイルで開く」ができない場合は Edit -> Project Setting -> Editor -> …

ローカル関数とラムダ式

私は普段仕事でも趣味でもUnityを使っているので、基本的に用いる言語はC#です。 ゲームプログラミングで重要なのはやはり速度ですが、複数人で開発したり長期的に改修が続く場合は可読性も大切です。 Unityでは読みやすいC#でプログラミングして、それが最…

ブログ新設しましたので、挨拶

初めまして。荷桐といいます。 4年ほど前から別のブログでどうしようもない記事を書いたりしてたんですが、 年月を経て結構自分の立場とか環境も変わったり なんやかんやあって新しくしました。 軽く自己紹介と、どういうこと書こうと思ってるかとか書き残し…