using UnityEngine; using System.Collections; public class HealingLinkFxController : LinkFxController { protected override bool isBillboard { get { return true; } } public float fadeDuration = 1f; private float _startTime; private const string _colorName = "_node_6990"; protected override MeshRenderer RegisterMeshMaterials() { materialRecords = new LinkFxMaterialRecord[3]; // Dummy仅仅用于测量长度,不用于其它功能 var meshRenderer_0 = transform.Find("link_0").GetComponent(); materialRecords[0] = new LinkFxMaterialRecord(meshRenderer_0.material, new[] {"_dif"}); var meshRenderer_1 = transform.Find("link_1").GetComponent(); materialRecords[1] = new LinkFxMaterialRecord(meshRenderer_1.material, new[] {"_dif", "_node_1489_copy", "_alpha"}); var meshRenderer_2 = transform.Find("link_2").GetComponent(); materialRecords[2] = new LinkFxMaterialRecord(meshRenderer_2.material, new[] {"_dif", "_node_1489_copy", "_alpha"}); return meshRenderer_0; } private void OnEnable() { _startTime = Time.unscaledTime; } public override bool TryUpdateLink() { var alpha = endTime - Time.time < fadeDuration ? Mathf.Clamp01((endTime - Time.time) / fadeDuration) : 1f; // 特效默认alpha为0.5 alpha *= 0.5f; SetAlpha(materialRecords[0].material, alpha); SetAlpha(materialRecords[1].material, alpha); SetAlpha(materialRecords[2].material, alpha); return base.TryUpdateLink(); } private static void SetAlpha(Material material, float alpha) { var color = material.GetColor(_colorName); color.a = alpha; material.SetColor(_colorName, color); } }