// Update is called once per frame void Update() { if (levelChecker.Length == 0) { return; } int newLevel = -1; if (currentLevel != -1 && levelChecker[currentLevel].isVisible) { ///Lod 没有改变 newLevel = currentLevel; } else { ///Lod 发生变化 for (int i = levelChecker.Length - 1; i >= 0; i--) { if (levelChecker[i].isVisible) { newLevel = i; break; } } } if (newLevel != currentLevel) { ///触发LOD级别改变事件 OnLODLevelChanged.Invoke(newLevel); } currentLevel = newLevel; }
protected override void Start() { base.Start(); if (!animator) { animator = GetComponent <Animator>(); } OnLODLevelChanged.AddListener(RefreshMesh); }