コミックマーケット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…

【Unity】自作のPlayableを作成しTimelineで再生できるようにする

Playable API周りについての概要がなんとなくわかってきたので、次にScriptablePlayableを自作してみたいと思い調査をしてみました。 最終目標は独自のTrackをTimelineで再生をすることです。 ScriptPlayable を自作する ScriptPlayableを作るにはPlayableBe…

【Unity】Playable と Timelineについて

これまで触ってなかったUnityの「TimeLine」について調べる機会がありました。 その中で「Playable」についてブログに書いていきたいと思います。 Playable API 調べるとUnityには「Playable API」と呼ばれるものがあるのがわかりました。 これは、アニメー…

【C#】クラスをDeep Copyする

ローカルに保存したデータクラスを変更した場合、その参照先のデータも変更されます。 例えば、Saveボタンがあり、ボタンを押したときだけデータクラスを変更したい場合には、変更前の値をどこかに保持しなくてはいけません。 単純に次のように別の変数を用…

【Unity】クラス同士の比較を行いたいときに IEquatableを使う

とあるデータクラスを作ったときに、その中身が同じかどうかを比較をしたい場合にIEquatableを使って比較するのが良いと教わったので、実装をしてみました。 IEquatable このインターフェイスは等価かどうかを判断するEqualsが定義されています。 継承したク…

ニーアレプリカントをクリアした

少し前になるのですが、ニーアレプリカントをクリアしました。 ニーア レプリカント ver.1.22474487139... - PS4スクウェア・エニックスAmazon ニーアレプリカント 本作はPS4版でリメイクされた作品ですが、私は過去作をやっていません。 ただ続編のニーアオ…

ゼルダ無双 厄災の黙示録クリアした

先月くらいから遊んでいたゼルダ無双を最近クリアしました。 簡単ですが遊んでみた感想などを書いていきたいと思います。 ゼルダ無双 厄災の黙示録 -Switch発売日: 2020/11/20メディア: Video Game 無双シリーズ 無双シリーズは本作品以外にもたくさん出てい…

NETFLIXの本を読んだ

連休中なのですが、前から積んでいたNETFLIXの本を読みました。 こちらの本です。 NO RULES(ノー・ルールズ) 世界一「自由」な会社、NETFLIX作者:リード・ヘイスティングス,エリン・メイヤー発売日: 2020/10/22メディア: 単行本(ソフトカバー) 内容 よくあ…

【読書】赤と白、我が人生を読む

ゴールデンウィークということで普段余りやらないことをやっているのですが、今日はサッカーのアーセン・ベンゲル監督の「赤と白、我が人生」を読みました。 アーセン・ヴェンゲル自伝 赤と白、わが人生 (ヨシモトブックス)作者:アーセン・ヴェンゲル発売日:…

【Unity】 mod2演算とは

ある数字を+1ずつ足していき、〇〇以上になった場合に0に戻す。 こういったロジックを実装するときにmod2を使うと簡単に書くことができます。 普通に計算する 「ある数字を+1ずつ足していき、〇〇以上になった場合に0に戻す。」をwhile文を使って実装した…

【C#】LinqのToArrayとToListについて

LinqでToArrayやToListを使うときの注意点なのです。 使い方によっては負荷が上がってしまうので用途により使い分けたほうがよいです。 パフォーマンス比較 次のコードを書いてUnityのProfilerで調べてみます。 Profiler.BeginSample("None"); var sample1 =…

【Unity】switch式について

とあるプルリクエストを見ていたときに、今までみたことのない書き方があり調べてみるとことにしました。 switch式 調べたとこと「switch式」という演算子でした。 docs.microsoft.com 具体例 まず、2つのタイプを用意します。 public enum TestType { None,…

【Unity】ZStringを使って文字を操作する

ある文字とある文字を組み合わせて文字列を作る際に今までは次のようなコードを書いていました。 var value = 10; var maxValue = 100; var text = string.Format("{0}/{1}", value, maxValue); Debug.Log(text); // 10/100 上記コードは、Riderを使っている…

【Unity】VideoPlayerで 「video unsupported by hardware」のエラーが出た

UnityのVideoPlayerを何気なく使ったところ、エディタ上では動画が再生されるが、実機にビルドすると再生されない問題が出たときの対処方法です。 Codecを変更する おそらく動画ファイルの設定が問題なのですが、何も考えずに動画をProjectへ入れると、Codec…

Enumerable.Rangeを調べてみた

とあるListを作成したいときに通常なら次のようなコードを書くとします。 var lists = new List<int>(); for (int i = 0; i < 5; i++) { lists.Add(i); } 実はこのような記述はLinqを使うと次のように置き換えることができます。 var lists = Enumerable.Range(0,</int>…

【Unity】LayoutGroupについて

LayoutGroupについて LayoutGroupのコンポーネント配下のGameObjectを自動的に配置します。 位置の調整や要素の大きさなど、LayoutGroupの設定項目に合わせてレイアウトします。 種類 LayoutGroupは次の3つ種類が用意されています。 Horizontal Layout Group…