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