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