【Unity】UniTaskのキャンセル時の実装を調べてみた

UniTask.WaitWhileのキャンセル処理時の実装をしなくてはいけなくて調べてみました。 キャンセル処理 タイムアウトやキャンセルされる場合、OperationCanceledExceptionが発生する可能性があります。この例外を適切に処理するには、try-catch構文を使用する…

【Unity】ParticleSystemのLifetime by Emitter Speedモジュールについて

Lifetime by Emitter Speed UnityのParticleSystemもモジュールの一つで、移動するオブジェクトの速度から発生するパーティクルの寿命を調整することができます。 設定項目 Lifetime by Emitter Speedの設定項目は次の2つです。 Multiplier(マルチプライアー…

【Unity Editor】AssetDatabase.SaveAssetIfDirty()を使って変更点を保存する

UnityのEditor拡張時、ScriptableObjectを保存したい時に調べたメモになります。 SaveAssetIfDirty SaveAssetIfDirtyUnityはアセットが変更された場合の保存時に利用をします。 指定されたアセットが変更されている場合にのみ、そのアセットを保存するので、…

List<T>.AsReadOnly() について

自分用のメモのような記事です。 var list = new List<string> { "tarou", "hanako", "jirou" }; // 読み取り専用に変換 ReadOnlyCollection<string> readOnlyList = myList.AsReadOnly(); readOnlyListは要素へのアクセスできますが、配列要素の追加や削除、変更はできませ</string></string>…

コミックマーケット102にサークル参加します

久しぶりのブログ記事となりますが、 8月12日と13日に開催される「コミックマーケット102」にて、サークルスペースを頂くことができ、本日無事に同人誌の入稿が完了しました。

2023年目標

仕事 ここ1年のスケジュールがヤバそうなので、スケジュール送れないようするのが目標。 上手く回していくのが大事なのですが、各所相談をしっかりして調整もしていく必要があるので、臨機応変に動けるようにする。 Unityゲーム プログラミング・バイブル 2n…

【C101】サークル「albatrus」にお越しいただきありがとうございました!

本日、東京ビックサイトで行われたコミックマーケット101・西-す05b「albatrus」にお越しいただきありがとうございました。 夏のC100に続いてサークルスペースをいただくことができたので、毎回恒例のUnityの本を持って行きました。 albatrus.com お誕生席 …

【Unity】コンポーネントのプロパティ名を取得する

UnityのEditor拡張時に、プロパティ名が知りたいときがあります。 プロパティ名を知る方法はいくつかあります。 差分を見る Gitの差分を見れば、プロパティ名がわかります。 SourceTreeの例ですが、画面上に次の画像のように表示されます。 SourceTreeの差分…

コミックマーケット101にサークル参加します

毎回恒例ですが、ゲームエンジンUnityを使った同人誌になります。 今回は何か特別なアウトプットできることがなかったので、普段業務を行っているUI周りについて書きました。 BaseMeshEffectでMeshを触ったり、Shaderを使ったりして、グラデーションや角丸、…

ホビーラウンドへ行ってきました

浅草で開催されたホビーラウンドに行ってきました。 詳しいイベント内容はこちら。 hobby.volks.co.jp

【雑記】北海道道東に行ってきた

釧路湿原 事前に釧路湿原を通る観光列車の予約をしていたのですが、台風接近で運行中止になっていました。 展望台らしき箇所に行ったのですが、あまり良い風景は拝めませんでした。 夕焼け 硫黄山 朝早いこともあったのか全然人がいませんでしたが、硫黄の独…

C#のオーバーロード

c#では、同じメソッド名で、違う引数を定義できます。これをオーバーロードと呼びます。 public void SetValue() { } public void SetValue(int value) { } メソッド名を変えても良いのですが同じような用途で利用する場合などで使うと便利です。 独習C# 第5…

【c100】コミケ戦利品まとめ

かなり遅いですが、C100で買った戦利品をまとめたいと思います。 とはいっても、現地で直接買ったものは一部で、しかも買ってきてもらったやつです。 その他は通販で買いました。 ホロライブのセット(企業ブース) 現地に来た思い出として買いました。自分…

【C100】サークル「albatrus」にお越しいただきありがとうございました!

昨日、東京ビックサイトで行われたコミックマーケット100・南-そ07a「albatrus」にお越しいただきありがとうございました。 コロナがあり、自分としても久しぶりのサークル参加で、 忘れないうちにこの記事で色々と書いていきたいと思います。 サークル コロ…

ワンフェス(夏)に行ってきました

先週、幕張で行われたワンダーフェスティバルに行ってきました。 久しぶりの幕張メッセ ダイレクトパス 先月くらいにローソンチケットで「ダイレクトパス」が発売をされていてその抽選に応募していました。 これは会場に一番に入れる有料チケットです。 整理…

コミックマーケット100にサークル参加します

8/13に開催される「コミックマーケット100」にサークル参加を予定しています。 本日無事同人誌の入稿が終わり本を配布できそうです。 久々の参加になるのですが、興味のある方はぜひサークルスペースへお越しください。(事前チケット制なのでコミケに興味あ…

【Unity】配列の引数でparamsパラメーターを使う

引数に配列を指定する場合、何も考えずに実装をすると次のようになると思います。 private void Hoge(string[] texts) { } この関数を使う場合、一旦配列を作って引数に渡して上げる必要があります。 var texts = new[] { "hoge", "hoge2","hoge3" }; Hoge(t…

【Unity】Timeline用のショートカットを実装する

Timelineで何かしらショートカットを登録したい場合、専用の属性(TimelineShortcutAttribute) がありますのでこれを利用すると簡単に実装できます。 docs.unity3d.com [TimelineShortcut("Custom Shortcut", KeyCode.RightArrow, ShortcutModifiers.Shift)] …

【Unity】TimelineのUndo処理

何かしらClipを操作するEditor拡張を作る場合に変更を取り消したい場合があるかと思います。 その場合、Undo処理を実装すれば Command + Z で簡単に戻すことができます。 UndoExtensions 通常のEditor拡張ですがUndoクラスを使うのですが、Timeline周りではU…

東京競馬場へ行ってきました - フローラS

コロナの影響で、事前に抽選を通らないといけなくなったため、今回は11月以来の来場でした。 天気は余り良くなく、午後はずっと雨が降っていました。 競馬場へ行く目的は写真を取ることなので、濡れても大丈夫なように装備(カッパなど)はしっかりと整えて…

佐々木朗希投手の連続完全試合のかかった試合を観てきました!

約7年ぶりの千葉マリンスタジアム。 チケットは1ヶ月前くらいに取っていたのですが、何かのめぐり合わせか佐々木朗希投手の連続完全試合なるかどうかの試合になってました。 天気は余り良くなかった コロナで海浜幕張駅で降りるのも2年以上空いていました。…

【Unity】SessionStateで値を保存する

SessionStateはエディタ起動時のみ値を保持する仕組みです。 エディタ拡張時、SerializeFieldなどで保持しなくても良い重要度の低い値を保存するときに便利に使えます。 保存 保存するKeyを定義します。 これは取得する際に必要になります。 string key = "S…

【Unity】Presetを使ってコンポーネントの設定の自動化を行う

Unityの機能にPresetと呼ばれる機能があります。 docs.unity3d.com プリセットは特定のコンポーネントの設定を保存して、それを同じコンポーネントで使うことができます。 プリセットの保存 例としてImageコンポーネントの「Raycast Target」を外したプリセ…

【2021年】多摩動物園へ行ってきました

数年前から「12月に動物園へ行く」という謎のルーティンを自分に架しているのですが、去年はコロナの影響で行くことができず、2年ぶりに動物園へ行ってきました。 ライオン 多摩動物園は4年ぶりで、その時に工事をしていたライオン周りのエリアが完成してい…

【Unity】TextMeshProに数字を設定する

メモ書きになります 数字を文字列変換 TextMeshProに表示するテキストは文字列でなければならないので、次のような記述をしていました。 text = x.ToString(); こちらの方法で変換はできるのですが、文字列に変換する家庭でメモリのアロケーションが起きるよ…

【Unity】ジェネリック型のCustomEditor

エディタ拡張を行っている時にあるジェネリクス型のクラスのInspectorを変更したい時がありその時の知見です。 対象のクラス 例えばベースクラスとして次のようなクラスを定義しました。 public class HogeBase<T> : MonoBehaviour { [SerializeField] private </t>…

【Unity】TimelineのTrackの見た目を変える

TimelineのTrackの見た目を変える場合にはTrackEditorクラスを使います。 [CustomTimelineEditor(typeof(HogeTrack))] public class HogeTrackEditor : TrackEditor { } CustomTimelineEditor Attributeに指定したTrackが拡張されます。 TrackDrawOptions Tr…

【Unity】TimelineのClipの見た目拡張

Timelineで利用するClipの拡張をする場合、ClipEditorクラスを継承をして実装を行います。 [CustomTimelineEditor(typeof(HogeClip))] public class HogeClipEditor : ClipEditor { } CustomTimelineEditor Attributeは拡張対象になるClipのクラスをしていし…

【Unity】TimelineのTrackAsset周りを調べてみる

TimelineのTrackを自作するときにTrackAssetクラスを使います。 このクラスでは何ができるのかを調べてみました。 TimelineのTrack TrackAsset 自作のTrackを作る場合にはTrackAssetクラスを継承します。 public class TestTrack : TrackAsset { } Clip指定…

【Unity】ExecuteAlwaysについて

Unityで使うc#のクラスでは色々なAttributeを定義することができます。 その中で「ExecuteAlways」というAttributeがあります。 docs.unity3d.com ExecuteAlways 簡単な例は次のようになります。 [ExecuteAlways] public class ExecuteAlwaysTest : MonoBeha…