もぶろぐ

もぶのログ、それがもぶろぐ。

ZStringをUPM経由でインストールする方法

# インストール方法

GitHubページに記載されているが、ネット検索するとパッケージ経由ばかりだったので共有しておきます。

 

UPM -> +ボタンから、`Add package from git URL`を選択し、

以下を入力、決定する

`https://github.com/Cysharp/ZString.git?path=src/ZString.Unity/Assets/Scripts/ZString`

 

参考

github.com

 

Assets以下に配置されないだけでスッキリするし、レポジトリを公開する際にも生データを上げないで済むのでとても助かります。

【UniRx】AddToについて【使い方】

はじめに

AddTo() は、UniRxが提供している拡張メソッドです。
UniRxでは、購読の破棄を正しく行わないとメモリリークが発生します。
AddTo()を記述する事で、引数に渡したGameObjectがDestroyされる際に自動で購読破棄されるようになります。

使い方

AddTo()は、Subscribe時にメソッドチェーンで続けて記述します。
(厳密には、IDisposableインスタンス全てに生やすことが可能です)

自身の寿命に紐づける時

using UniRx;

class Sample : MonoBehaviour
{
    IntReactiveProperty score = new IntReactiveProperty();

    void Awake()
    {
        score.Subscribe(x => 購読処理)
            .AddTo(this); // AddTo(gameObject)と同義
    }
}

もちろん、他者の寿命に紐づける事も可能です。

[SerializeField] GameObject other;

void Awake
{
    score.Subscribe(x => 購読処理)
        .AddTo(other);
}

挙動

GameObjectを渡した場合は、GameObjectがDestroyされると自動的に購読破棄されます
Componentを渡した場合は、アタッチされているGameObjectがDestroyされると自動的に購読破棄されます

いずれも、GameObjectがDestroyされる時にのみ破棄される事に注意が必要です

まとめ

  • 購読破棄忘れによるメモリリークを防ぐ
  • Subscribe時にメソッドチェーンで記述する
  • GameObjectを渡した場合は、GameObjectがDestroyされると自動的に購読破棄される
  • Componentを渡した場合は、アタッチされているGameObjectがDestroyされると自動的に購読破棄される