[UNITY]2DRPG開発日誌 #64 GetHushCode()のハッシュコードが変わるタイミング

GetHushCodeとは

私もよくわかっていませんが、要するにオブジェクトの持つ固有の数値みたいなものです。

なので、同じオブジェクトかどうかを比較する際に使えたりします。

それでは、そのHushCodeが変わるタイミングはいつなのでしょうか?

変わるタイミング

HushCodeが変わるタイミングはざっくり言うと「シーンを移動しなければ変わらない」という感じです。具体的には、

  • オブジェクトを複製 … 変わらない(複製されたオブジェクトは別のHushCodeを持つ)
  • オブジェクトの「名前」「位置」「コンポーネントの内容」等を変更 … 変わらない
  • シーン移動で対象のオブジェクトが破棄された場合 … 変わる
  • シーン移動したがDontDestroyOnLoadで対象のオブジェクトが保持された場合 … 変わらない

という感じです。

 

※確認に使ったコード

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class TestHushCodeMG : MonoBehaviour
{
    public static TestHushCodeMG instance = null;

    private void Awake()
    {
        if (instance == null)
        {
            instance = this;
            DontDestroyOnLoad(this.gameObject);
        }
        else
        {
            Destroy(this.gameObject);
        }
    }

    public void TEST_Button()
    {
        SceneManager.LoadScene(SceneManager.GetActiveScene().name);
    }

    private void Update()
    {
        Debug.Log(this + ": " + this.gameObject.GetHashCode());
    }
}