2025-09-25 19:04:05 +08:00
|
|
|
using System;
|
|
|
|
|
using System.Collections;
|
|
|
|
|
using Convention;
|
|
|
|
|
using Dreamteck.Splines;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
namespace Demo.Game
|
|
|
|
|
{
|
|
|
|
|
public class SplineTubeRenderer : BasicSplineRenderer<TubeGenerator>
|
|
|
|
|
{
|
|
|
|
|
public static SplineTubeRenderer Make()
|
|
|
|
|
{
|
|
|
|
|
return new GameObject().AddComponent<SplineTubeRenderer>();
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-04 23:09:46 +08:00
|
|
|
public const bool DefaultIsDoubleSide = true;
|
|
|
|
|
public const int DefaultSidesCount = 12;
|
|
|
|
|
[Content] public bool IsDoubleSide = DefaultIsDoubleSide;
|
|
|
|
|
[Content] public int SidesCount = DefaultSidesCount;
|
2025-09-25 19:04:05 +08:00
|
|
|
|
|
|
|
|
public override IEnumerator LoadScript(string script)
|
|
|
|
|
{
|
|
|
|
|
MyLineMaterial = Resources.Load<Material>("Tube/Default");
|
|
|
|
|
yield return base.LoadScript(script);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override void SetupMeshGenerator(TubeGenerator meshGenerater)
|
|
|
|
|
{
|
|
|
|
|
base.SetupMeshGenerator(meshGenerater);
|
|
|
|
|
meshGenerater.doubleSided = IsDoubleSide;
|
|
|
|
|
meshGenerater.sides = SidesCount;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override IEnumerator UnloadScript()
|
|
|
|
|
{
|
|
|
|
|
yield return base.UnloadScript();
|
2025-10-04 23:09:46 +08:00
|
|
|
// Reset
|
|
|
|
|
{
|
|
|
|
|
IsDoubleSide = DefaultIsDoubleSide;
|
|
|
|
|
SidesCount = DefaultSidesCount;
|
|
|
|
|
}
|
2025-09-25 19:04:05 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 禁用双面渲染,用于优化性能
|
|
|
|
|
/// </summary>
|
2025-10-27 20:24:15 +08:00
|
|
|
[Convention.RScript.Variable.Attr.Method]
|
2025-09-25 19:04:05 +08:00
|
|
|
public void DisableDoubleSide()
|
|
|
|
|
{
|
|
|
|
|
IsDoubleSide = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 设置面数,越高越圆润
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sides"></param>
|
2025-10-27 20:24:15 +08:00
|
|
|
[Convention.RScript.Variable.Attr.Method]
|
2025-09-25 19:04:05 +08:00
|
|
|
public void SetSides(int sides)
|
|
|
|
|
{
|
|
|
|
|
SidesCount = Mathf.Min(3, sides);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|