Files
JJBB/Assets/Project/Script/Plugin/HealingLinkFxController.cs
2024-08-23 15:49:34 +08:00

50 lines
1.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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