补充注释及更多用法。

This commit is contained in:
2026-07-06 17:04:54 +08:00
parent d938aa9929
commit 45944e4539
5 changed files with 406 additions and 134 deletions
+79 -10
View File
@@ -3,6 +3,7 @@ using System.Linq;
using UnityEngine;
using UnityEngine.Pool;
using UnityEngine.UI;
using XericLibrary.Runtime.MacroLibrary;
namespace XericLibrary.Runtime.UIGraph
{
@@ -21,6 +22,7 @@ namespace XericLibrary.Runtime.UIGraph
private readonly List<int> _indexList = new List<int>();
// 阵列原点
private List<Vector4> _arrayTransformList = new List<Vector4>();
private List<Color32> _arrayColorList = new List<Color32>();
// 中间数据
private List<UIVertex> _temp_vertexList = new List<UIVertex>();
private List<int> _temp_indexList = new List<int>();
@@ -89,14 +91,26 @@ namespace XericLibrary.Runtime.UIGraph
/// </summary>
/// <param name="offset">偏移</param>
/// <param name="angle">角度</param>
public int AddArrayModifier(Vector3 offset, float angle)
public int AddArrayModifier(Vector2 offset, float angle, float size)
{
var index = _arrayTransformList.Count;
_arrayTransformList.Add(new Vector4(offset.x, offset.y, offset.z, angle));
_arrayTransformList.Add(new Vector4(offset.x, offset.y, angle, size));
Refresh();
return index;
}
/// <summary>
/// 设置阵列节点
/// </summary>
/// <param name="trans"></param>
public void SetArrayModifier(IList<Vector4> trans)
{
if (trans == null)
return;
_arrayTransformList.Clear();
_arrayTransformList.AddRange(trans);
}
/// <summary>
/// 清空阵列节点
/// </summary>
@@ -105,15 +119,62 @@ namespace XericLibrary.Runtime.UIGraph
_arrayTransformList.Clear();
Refresh();
}
public bool ModifyArrayModifier(int index, Vector3 offset, float angle)
/// <summary>
/// 修改阵列节点
/// </summary>
/// <param name="index"></param>
/// <param name="offset"></param>
/// <param name="angle"></param>
/// <param name="size"></param>
/// <returns></returns>
public bool ModifyArrayModifier(int index, Vector2 offset, float angle, float size)
{
if (index < 0 || index >= _arrayTransformList.Count)
return false;
_arrayTransformList[index] = new Vector4(offset.x, offset.y, offset.z, angle);
_arrayTransformList[index] = new Vector4(offset.x, offset.y, angle, size);
Refresh();
return true;
}
public IList<Vector4> GetArrayModifier() => _arrayTransformList;
/// <summary>
/// 添加颜色
/// </summary>
/// <param name="color"></param>
public void AddColor(Color color) => _arrayColorList.Add(color);
/// <summary>
/// 添加颜色
/// </summary>
/// <param name="color"></param>
public void AddColor(Color32 color) => _arrayColorList.Add(color);
/// <summary>
/// 设置颜色节点
/// </summary>
/// <param name="index"></param>
/// <param name="color"></param>
public void SetColor(int index, Color color) => _arrayColorList.SetAtIndex<Color32>(color, index);
/// <summary>
/// 设置颜色节点
/// </summary>
/// <param name="index"></param>
/// <param name="color"></param>
public void SetColor(int index, Color32 color) => _arrayColorList.SetAtIndex<Color32>(color, index);
/// <summary>
/// 清空颜色
/// </summary>
public void ClearArrayColor() => _arrayColorList.Clear();
/// <summary>
/// 获取颜色列表
/// </summary>
/// <returns></returns>
public IList<Color32> GetArrayColor() => _arrayColorList;
#endregion
@@ -147,19 +208,27 @@ namespace XericLibrary.Runtime.UIGraph
{
_temp_vertexList.AddRange(_vertexList.Select(a =>
{
var newPos = a.position;
if (transform.w != 0)
Vector2 newPos = a.position;
if (transform.z != 0)
{
var rot = Quaternion.Euler(0, 0, transform.w);
var rot = Quaternion.Euler(0, 0, transform.z);
newPos = rot * newPos;
}
newPos += (Vector3)transform;
if (transform.z > 0)
newPos *= transform.w;
newPos += (Vector2)transform;
var newColor = a.color;
if (index < _arrayColorList.Count && !default(Color32).Equals(_arrayColorList[index]))
{
newColor = _arrayColorList[index];
}
return new UIVertex()
{
position = newPos,
normal = a.normal,
tangent = a.tangent,
color = a.color,
color = newColor,
uv0 = a.uv0,
uv1 = a.uv1,
uv2 = a.uv2,