50 lines
1.8 KiB
C#
50 lines
1.8 KiB
C#
|
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<MeshRenderer>();
|
|||
|
materialRecords[0] = new LinkFxMaterialRecord(meshRenderer_0.material, new[] {"_dif"});
|
|||
|
var meshRenderer_1 = transform.Find("link_1").GetComponent<MeshRenderer>();
|
|||
|
materialRecords[1] = new LinkFxMaterialRecord(meshRenderer_1.material, new[] {"_dif", "_node_1489_copy", "_alpha"});
|
|||
|
var meshRenderer_2 = transform.Find("link_2").GetComponent<MeshRenderer>();
|
|||
|
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);
|
|||
|
}
|
|||
|
}
|