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

コロナの影響で、事前に抽選を通らないといけなくなったため、今回は11月以来の来場でした。

天気は余り良くなく、午後はずっと雨が降っていました。 競馬場へ行く目的は写真を取ることなので、濡れても大丈夫なように装備(カッパなど)はしっかりと整えてきています。

コロナ対策でマス目が引かれている

写真など

写真撮影位置は、ゴール板から少し手前の場所です。 ゴールから大体200m手前付近から写真を取り始めます。

フローラSを勝ったエリカヴィータ
ゴール前付近は、報道陣のカメラマンがいるため邪魔になり上手く移せない場合があります。 またゴール過ぎあたりでは自分の手元のレンズでは大きく写すのが難しいです(大きく撮れても、騎手が手綱を緩めて真剣に走っていないことが多い)
ボーデンはまた2着

ちょうど目の前
ゴール手前300mくらい。ここだと写真取るのには遠い
ダートはそもそも遠いので目の前でこれくらいの大きさ

武豊

武豊騎手のファンなので勝ってほしかったが、最高で3着だった......

蛯名調教師

今年から調教師の蛯名元騎手。

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

約7年ぶりの千葉マリンスタジアム。 チケットは1ヶ月前くらいに取っていたのですが、何かのめぐり合わせか佐々木朗希投手の連続完全試合なるかどうかの試合になってました。

天気は余り良くなかった

コロナで海浜幕張駅で降りるのも2年以上空いていました。 この日はチケット完売ということで、どこもかしこも人だらけ。 毎回球場に行くと何かしら記念グッツを買うのですが、この日はそれどころではありませんでした。

球場前では、ちょうど1週間前に達成された佐々木朗希投手のイベントをしてました。

完全試合の記念パネル

記念の新聞?

今回は初めて一眼レフカメラを持ってきましたが、自分が持っているレンズでは余り大きくれませんでした。(席が4階席というのもありましたが)

話題のBIGBOSSも撮れました。

BIGBOSS監督

感想

試合の結果はご存知の方多いかもしれませんが、終盤まで緊張感のあるゲームでした。 この日はとても寒くなる予想で、ダウンジャケットを着ていったのですが、現地は全然寒くなく荷物になっただけだったのが唯一の残念な点でした。

【Unity】SessionStateで値を保存する

SessionStateはエディタ起動時のみ値を保持する仕組みです。 エディタ拡張時、SerializeFieldなどで保持しなくても良い重要度の低い値を保存するときに便利に使えます。

保存

保存するKeyを定義します。 これは取得する際に必要になります。

string key = "Save_Key";
bool isHoge = false;
SessionState.SetBool(key, isHoge);

取得

Keyを使って取得します。 第2引数はデフォルトの値になります。

var isHoge =  SessionState.GetBool(key, false);

種類

上記ではBoolを使いましたが、次の種類の型に対応をしています。

  • Bool
  • Float
  • Int
  • Array
  • String
  • Vector3

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

Unityの機能にPresetと呼ばれる機能があります。

docs.unity3d.com

プリセットは特定のコンポーネントの設定を保存して、それを同じコンポーネントで使うことができます。

プリセットの保存

例としてImageコンポーネントの「Raycast Target」を外したプリセットを作ってみます。

適当にImageコンポーネントをアタッチして、Raycast TargetをOffにします。

f:id:albatrus:20220112142108p:plain
ImageのRaycast Targetを外す

コンポーネントの左上に上下矢印ボタンがあります。

f:id:albatrus:20220112142233p:plain
真ん中

Save Current to...を押すとプリセットが作成されます。

f:id:albatrus:20220112142623p:plain
Save Current to...

プリセットを利用する

プリセットを利用する場合、上下矢印ボタンを押して、対象のプリセットを選択します。

f:id:albatrus:20220112143436p:plain
プリセットを利用する

自動設定をする

プリセットの設定で「Add to image default」を押せば、該当のプリセットをデフォルト設定にすることができます。

f:id:albatrus:20220112143611p:plain
デフォルト設定

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

数年前から「12月に動物園へ行く」という謎のルーティンを自分に架しているのですが、去年はコロナの影響で行くことができず、2年ぶりに動物園へ行ってきました。

ライオン

多摩動物園は4年ぶりで、その時に工事をしていたライオン周りのエリアが完成していました。

f:id:albatrus:20211223100736j:plain
ライオン

本当はライオンバスに乗りたかったのですが、近くの小学生の子たちが占拠をしていたので諦めました。 ただ、寝ているライオンが多かったので思ったような写真とれなさそうでしたので無理に乗らなくて良かった気がしてます。

サーバル

けものフレンズで有名なサーバル。 毛づくろいをしていて、余り動いてなかったです。

f:id:albatrus:20211223101456j:plain
サーバルちゃん

アフリカゾウ

2頭外に出ていました。 前回来たときもいたのですが、どちらも見た目結構年をとっていそうでした。

f:id:albatrus:20211223102258j:plain
アフリカゾウ

チンパンジー

チンパンジーの子供。 親と思われる個体と鉢塚(人工)をなめてました。

f:id:albatrus:20211223103745j:plain
チンパンジー

1匹だけ群れと離れていたやつ。 結構ワイルドな見た目をしています。

f:id:albatrus:20211223103823j:plain
チンパンジー2

カンガルー

完全に日光浴びてくつろいでいる。

f:id:albatrus:20211223110022j:plain
カンガルー

トラ

2つの檻に1匹づついましたが、かなり大きく迫力ありました。 人間慣れしているのかすぐ近くまで来てくれて、周りの子供たちが騒いでました。

f:id:albatrus:20211223112147j:plain
トラ

ユキヒョウ

写真撮影をしている多摩動物園に詳しい人が勝手に解説をしていました。 ユキヒョウはローテーションで一頭づつ檻から出てくるシステムみたいです。

f:id:albatrus:20211223113047j:plain
檻から出てくるユキヒョウ

レッサーパンダ

日光の関係でリムライト風なレッサーパンダ。 寝ているやつが多くて、この個体だけ動いてました。

f:id:albatrus:20211223113414j:plain
リムライトなレッサーパンダ

サイ

サイのエリアが新しくなってました。 重厚な肌の質感がカメラ越しでもはっきり見えます。 サイだけではないのですが、巨大生物を見るととてもテンションが上りますね。

f:id:albatrus:20211223114949j:plain
サイ

最後に

以前に少し話題になっった女王アリが死んだコロニーはすでに撤収されていて見れなかったのが残念でした。 www.tokyo-zoo.net

新しいエリアが増えてきれいになっていました。それに伴い動物も見やすくなっている気がします。 ほとんどが家族(子供)連れでしたが、平日なので全然人がいなかったのでとても良かったです。

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

メモ書きになります

数字を文字列変換

TextMeshProに表示するテキストは文字列でなければならないので、次のような記述をしていました。

text = x.ToString();

こちらの方法で変換はできるのですが、文字列に変換する家庭でメモリのアロケーションが起きるよと指摘をいただきました。

SetText

TextMeshProにはSetTextという関数があります。 これを使うとアロケーションなしに文字列を変換できます。

text.SetText("{0}",x};

tsubakit1.hateblo.jp

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

エディタ拡張を行っている時にあるジェネリクス型のクラスのInspectorを変更したい時がありその時の知見です。

対象のクラス

例えばベースクラスとして次のようなクラスを定義しました。

public class HogeBase<T> : MonoBehaviour
{
    [SerializeField]
    private T _value;
    
}

継承したクラスはこのような感じになります。

public class HogeChild : HogeBase<float>
{

}

f:id:albatrus:20211208150715p:plain
Inspector

こちらのInspectorを拡張したい場合。

[CustomEditor(typeof(HogeBase<>),true)]
public class HogeInspector : Editor
{
    private SerializedProperty _scriptProperty;
    private SerializedProperty _valueProperty;

    private void OnEnable()
    {
        _scriptProperty = serializedObject.FindProperty("m_Script");
        _valueProperty = serializedObject.FindProperty("_value");
    }

    public override void OnInspectorGUI()
    {
        using (new EditorGUI.DisabledScope(true))
        {
            EditorGUILayout.PropertyField(_scriptProperty);
        }

        EditorGUILayout.PropertyField(_valueProperty, new GUIContent("値 "));
        
        serializedObject.ApplyModifiedProperties();
    }
}

f:id:albatrus:20211208154918p:plain
CustomEditorでInspectorを編集

CustomEditor

ジェネリクスを指定する場合には次のように指定します。 また継承先のクラスのCustomEditorの対象にするためには、第2引数をtrueにしてあげます。

[CustomEditor(typeof(HogeBase<>),true)]

複数のジェネリクスを格納する場合

次のように2つのジェネリクスの型があった場合

public class HogeBase<T,TValue> : MonoBehaviour
{
    [SerializeField]
    private T _value;
    
    [SerializeField]
    private TValue _value2;
    
}

カンマを使って指定ができます。

[CustomEditor(typeof(HogeBase<,>),true)]