整合SLSUtilities
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using DG.Tweening;
|
||||
using Sirenix.OdinInspector;
|
||||
using UnityEngine;
|
||||
|
||||
namespace SLSFramework.AllInOneAssistance
|
||||
{
|
||||
public partial class General3DObject : SerializedMonoBehaviour
|
||||
{
|
||||
public List<Renderer> renderers;
|
||||
public List<Material> materials;
|
||||
|
||||
protected virtual void Reset()
|
||||
{
|
||||
CollectRenderersAndMaterials();
|
||||
}
|
||||
|
||||
[Button("Collect Renderers and Materials")]
|
||||
private void CollectRenderersAndMaterials()
|
||||
{
|
||||
renderers = new List<Renderer>(GetComponentsInChildren<Renderer>());
|
||||
materials = new List<Material>();
|
||||
foreach (var renderer in renderers)
|
||||
{
|
||||
materials.AddRange(renderer.sharedMaterials);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public partial class General3DObject
|
||||
{
|
||||
private static readonly int FadeAmount = Shader.PropertyToID("_FadeAmount");
|
||||
private static readonly int FadeOn = Shader.PropertyToID("_FadeOn");
|
||||
private Sequence fadeSequence;
|
||||
|
||||
public void SetFadeAmount(float value)
|
||||
{
|
||||
foreach (var material in materials.Where(material => material.HasProperty(FadeAmount)))
|
||||
{
|
||||
material.SetFloat(FadeAmount, value);
|
||||
}
|
||||
}
|
||||
|
||||
public void SetFadeAnim(float duration, float startValue = 1f, float endValue = 0f)
|
||||
{
|
||||
fadeSequence?.Kill();
|
||||
fadeSequence = DOTween.Sequence();
|
||||
foreach (var material in materials.Where(material => material.HasProperty(FadeAmount)))
|
||||
{
|
||||
if (!material.HasFloat(FadeOn))
|
||||
{
|
||||
Debug.LogWarning($"{material.name} 没有 _FadeOn 属性,无法进行淡入淡出效果。");
|
||||
continue;
|
||||
}
|
||||
|
||||
fadeSequence.Join(material.DOFloat(endValue, FadeAmount, duration).From(startValue));
|
||||
}
|
||||
fadeSequence.Play();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 49a20100f427ec6458090df492fd4d3c
|
||||
Reference in New Issue
Block a user