Example #1
0
    // 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;
    }
Example #2
0
    protected override void Start()
    {
        base.Start();
        if (!animator)
        {
            animator = GetComponent <Animator>();
        }

        OnLODLevelChanged.AddListener(RefreshMesh);
    }