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());
}
}