| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | using Fort23.Core;using Fort23.UTool;using UnityEngine;namespace GameLogic.Combat.CombatTool.SceneTool{    public class SceneDecoration : CObject    {        private static readonly int RongJieValue = Shader.PropertyToID("_RongJieValue");        public GameObjectPool pool;        private MaterialPropertyBlock _materialPropertyBlock;        private Renderer[] renderers;        private float currTime;        public void Init(GameObjectPool pool)        {            this.pool = pool;            if (_materialPropertyBlock == null)            {                _materialPropertyBlock = new MaterialPropertyBlock();            }            Vector3 pos = CombatController.currActiveCombat.CombatCameraControllder.root.position;            Vector3 p2 = pool.own.transform.position;            float d = Vector3.Distance(pos, p2);            currTime = Random.Range(-1f, 0);            renderers = pool.own.transform.GetComponentsInChildren<Renderer>();            SetPropertyBlock();        }        private void SetPropertyBlock()        {            _materialPropertyBlock.SetFloat(RongJieValue, currTime);            for (int i = 0; i < renderers.Length; i++)            {                renderers[i].SetPropertyBlock(_materialPropertyBlock);            }        }        public void Update(float t)        {            if (currTime < 1)            {                currTime += t * 2f;                SetPropertyBlock();            }        }        public override void ActiveObj()        {        }        public override void DormancyObj()        {            currTime = 0;            SetPropertyBlock();            renderers = null;            GObjectPool.Instance.Recycle(pool);            pool = null;        }    }}
 |