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