添加基础枚举扩展

This commit is contained in:
2023-10-29 17:56:31 +08:00
parent e2ca273696
commit e293c5592d
6 changed files with 456 additions and 10 deletions

View File

@@ -1,7 +1,10 @@
using Codice.CM.WorkspaceServer.Tree.GameUI.HeadTree;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using Unity.VisualScripting.YamlDotNet.Core.Tokens;
@@ -156,4 +159,146 @@ namespace XericLibrary.Runtime.MacroLibrary
return isValid > 0 && isFull <= 0;
}
}
public static partial class MacroMath
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static int EnumToInt32(this Enum target)
{
return Convert.ToInt32(target);
}
/// <summary>
/// ö<>ٽ<EFBFBD><D9BD><EFBFBD><EFBFBD><EFBFBD>Ч
/// </summary>
/// <param name="target"></param>
/// <param name="value"></param>
/// <returns></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumJust(this Enum target, Enum value)
{
return target.EnumToInt32() == value.EnumToInt32();
}
/// <summary>
/// ö<><C3B6><EFBFBD><EFBFBD><EFBFBD>ٴ<EFBFBD><D9B4><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>Ŀ
/// </summary>
/// <returns><3E><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>Ŀ</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumGreater(this Enum target)
{
return target.EnumToInt32() > 0;
}
/// <summary>
/// ö<><C3B6><EFBFBD><EFBFBD><EFBFBD>ٴ<EFBFBD><D9B4><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>Ŀ
/// </summary>
/// <returns><3E><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>Ŀ</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumGreater(this Enum target, Enum value)
{
return (target.EnumToInt32() & value.EnumToInt32()) > 0;
}
/// <summary>
/// ö<><C3B6>1<EFBFBD><31>Ч
/// </summary>
/// <returns></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumGreater1(this Enum target)
{
return (target.EnumToInt32() & 01) > 0;
}
/// <summary>
/// ö<><C3B6>2<EFBFBD><32>Ч
/// </summary>
/// <returns></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumGreater2(this Enum target)
{
return (target.EnumToInt32() & 02) > 0;
}
/// <summary>
/// ö<><C3B6>3<EFBFBD><33>Ч
/// </summary>
/// <returns></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumGreater3(this Enum target)
{
return (target.EnumToInt32() & 04) > 0;
}
/// <summary>
/// ö<><C3B6>4<EFBFBD><34>Ч
/// </summary>
/// <returns></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumGreater4(this Enum target)
{
return (target.EnumToInt32() & 010) > 0;
}
/// <summary>
/// ö<><C3B6>5<EFBFBD><35>Ч
/// </summary>
/// <returns></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumGreater5(this Enum target)
{
return (target.EnumToInt32() & 020) > 0;
}
/// <summary>
/// ö<><C3B6>6<EFBFBD><36>Ч
/// </summary>
/// <returns></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumGreater6(this Enum target)
{
return (target.EnumToInt32() & 030) > 0;
}
/// <summary>
/// ö<><C3B6>7<EFBFBD><37>Ч
/// </summary>
/// <returns></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumGreater7(this Enum target)
{
return (target.EnumToInt32() & 040) > 0;
}
/// <summary>
/// ö<><C3B6>8<EFBFBD><38>Ч
/// </summary>
/// <returns></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumGreater8(this Enum target)
{
return (target.EnumToInt32() & 0100) > 0;
}
/// <summary>
/// ö<><C3B6>С<EFBFBD><D0A1>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>Ŀ
/// </summary>
/// <returns><3E><><EFBFBD><EFBFBD><EFBFBD>Ƿ񲻴<C7B7><F1B2BBB4><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>Ŀ</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumLess(this Enum target)
{
return target.EnumToInt32() <= 0;
}
/// <summary>
/// ö<><C3B6>С<EFBFBD><D0A1>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>Ŀ
/// </summary>
/// <returns><3E><><EFBFBD><EFBFBD><EFBFBD>Ƿ񲻴<C7B7><F1B2BBB4><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>Ŀ</returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static bool EnumLess(this Enum target, Enum value)
{
return (target.EnumToInt32() & value.EnumToInt32()) <= 0;
}
}
}

View File

@@ -0,0 +1,89 @@
using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using UnityEngine;
namespace XericLibrary.Runtime.MacroLibrary
{
public static partial class MacroMath
{
#region ϴ<EFBFBD><EFBFBD><EFBFBD>
/// <summary>
/// Fisher-Yatesϴ<73><CFB4><EFBFBD><EFBFBD><E3B7A8>ʱ<EFBFBD><EFBFBD>Ӷ<EFBFBD>ΪO(n*n),<2C>ռ<D5BC>Ӷ<EFBFBD>ΪO(n)
/// </summary>
/// <param name="length"><3E><>ѡ<EFBFBD><D1A1>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <param name="select"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <returns></returns>
public static List<int> FisherYatesShuffle(int length, int select)
{
var random = new System.Random();
List<int> arr = Enumerable.Range(1, length).ToList();
List<int> res = new List<int>();
for(int i = 0; i < select; ++i)
{
int k = random.Next(arr.Count);
res.Add(arr[k]);
arr.RemoveAt(k);
}
return res;
}
/// <summary>
/// <20><>ˮ<EFBFBD>س<EFBFBD><D8B3><EFBFBD><EFBFBD><EFBFBD><E3B7A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̰߳<DFB3>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>ơ<EFBFBD>
/// </summary>
/// <param name="arr"></param>
/// <param name="select"><3E><>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> M</param>
/// <param name="reservoir"></param>
/// <param name="cancellationToken"></param>
public static void ReservoirSampling(List<int> arr, int select, ConcurrentBag<int> reservoir, CancellationToken cancellationToken)
{
/**
* int M = 3; // <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>
* int totalElements = 10; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD>Ԫ<EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>
* var arr = new List<int>();
*
* for (int i = 1; i <= totalElements; i++)
* {
* arr.Add(i);
* }
*
* ConcurrentBag<int> reservoir = new ConcurrentBag<int>();
* Random random = new Random();
*
* var cancellationTokenSource = new CancellationTokenSource();
* var cancellationToken = cancellationTokenSource.Token;
*
* ThreadPool.QueueUserWorkItem(state =>
* ReservoirSampling(arr, M, reservoir, random, cancellationToken);
* , null);
*
* // ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
* cancellationTokenSource.Cancel();
*/
var random = new System.Random();
for(int i = select; i < arr.Count; ++i)
{
if(cancellationToken.IsCancellationRequested)
return;
int k = random.Next(i + 1); // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> k<><6B><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7> [0, i]
if(k < select)
{
// <20><><EFBFBD><EFBFBD> k С<><D0A1> M<><4D><EFBFBD><EFBFBD> arr[k] <20><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
reservoir.Add(arr[k]);
}
}
}
#endregion
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 696a363a0af92ff428710da4ee9e85a7
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -47,6 +47,7 @@ namespace XericLibrary.Runtime.MacroLibrary
return index;
}
#endregion
#region <EFBFBD><EFBFBD>ѧ
@@ -139,5 +140,29 @@ namespace XericLibrary.Runtime.MacroLibrary
#endregion
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>A<EFBFBD><41>B<EFBFBD><42>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public static List<int> GetListFormAToB(int a, int b)
{
var list = new List<int>();
bool way = a > b;
var step = way ? -1 : 1;
for(int i = a; (!way && i <= b) || (way && i >= b); i += step)
list.Add(i);
return list;
}
#endregion
}
}

View File

@@ -1,5 +1,8 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
namespace XericLibrary.Runtime.MacroLibrary
@@ -8,11 +11,91 @@ namespace XericLibrary.Runtime.MacroLibrary
{
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>ֵ
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="target"></param>
/// <param name="index"></param>
/// <returns></returns>
/// <exception cref="IndexOutOfRangeException"></exception>
public static T SelectIndex<T>(this IEnumerable<T> target, int index)
{
int nowIndex = 0;
foreach(var item in target)
if(nowIndex++ == index)
return (T)item;
throw new IndexOutOfRangeException("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD>Χ");
}
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޷<EFBFBD><DEB7>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>null<6C><6C><EFBFBD><EFBFBD>
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="target"></param>
/// <param name="index"></param>
/// <returns></returns>
public static T SelectIndexOrDefault<T>(this IEnumerable<T> target, int index)
where T : class
{
int nowIndex = 0;
foreach(var item in target)
if(nowIndex++ == index)
return (T)item;
return null;
}
/// <summary>
/// <20><>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>ȡһ<C8A1><D2BB><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8><EFBFBD><EFBFBD>ڵ<EFBFBD>
/// </summary>
/// <param name="trans"></param>
/// <returns></returns>
public static IEnumerable<Transform> GetParents(this Transform trans)
{
Transform target = trans.parent;
while(target != null)
{
yield return target;
target = target.parent;
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>и<EFBFBD><D0B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><E0A3AC><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>
/// <code>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴӵ<C8B4>ǰ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC>ҵ<EFBFBD><D2B5><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľڵ㣬
/// <20>Դ<EFBFBD>Ϊ<EFBFBD><CEAA>׼<EFBFBD><D7BC><EFBFBD>ӵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>Ӽ<EFBFBD><D3BC>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD>ҵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>Ľڵ<C4BD>
/// </code>
/// </summary>
/// <param name="trans"></param>
/// <param name="backStep"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD>׼<EFBFBD><D7BC><EFBFBD><EFBFBD>/param>
/// <returns></returns>
[Obsolete("δ<><CEB4>֤<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>")]
public static Transform GetObjectNameInParentsFilterByChildrenMeanDifferen(this Transform trans, int backStep = 1)
{
int minParentIndex = 0;
int index = 0;
int minChildCount = int.MaxValue;
foreach(Transform parent in trans.GetParents())
{
if(parent.childCount < minChildCount)
{
minChildCount = parent.childCount;
minParentIndex = index;
}
index++;
}
return trans.GetParents().SelectIndexOrDefault(minParentIndex - backStep);
}
/// <summary>
/// <20><>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5>ӳ<EFBFBD>Ա
/// </summary>
/// <param name="trans"></param>
/// <param name="recursion"><3E>ݹ<EFBFBD><DDB9><EFBFBD><EFBFBD>ȣ<EFBFBD>0<EFBFBD><30>ʾ<EFBFBD><CABE><EFBFBD>ڵ<EFBFBD>һ<EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD>Ѱ<EFBFBD>ң<EFBFBD>1<EFBFBD><31>ʾ<EFBFBD>ڰ<EFBFBD><DAB0><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>г<EFBFBD>Ա<EFBFBD><D4B1>Ѱ<EFBFBD><D1B0></param>
/// <returns></returns>
public static IEnumerable<Transform> GetChildren(this Transform trans)
{
@@ -23,34 +106,36 @@ namespace XericLibrary.Runtime.MacroLibrary
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// ע<><D7A2><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2>ҡ<EFBFBD>
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="trans"></param>
/// <param name="recursion"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>0<EFBFBD><30>ʾ<EFBFBD><CABE><EFBFBD>ڴ˴<EFBFBD>Ѱ<EFBFBD>ң<EFBFBD>1<EFBFBD><EFBFBD>ʾ<EFBFBD>ڰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>Ա<EFBFBD><EFBFBD>Ѱ<EFBFBD><EFBFBD></param>
/// <param name="recursion"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>0<EFBFBD><30>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>Ӽ<EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD>ң<EFBFBD>1<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>Ӽ<EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӽ<EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD>ң<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <returns></returns>
public static IEnumerable<T> GetChildrenRecursionComponents<T>(this Transform trans, int recursion = 1)
public static IEnumerable<T> GetComponentsInRecursionChildren<T>(this Transform trans, int recursion = 1)
where T : Component
{
int newRecursion = recursion - 1;
foreach(var item in trans.GetChildren())
{
var comp = item.GetComponent<T>();
if(comp == null && newRecursion > 0)
comp = item.GetChildrenRecursionComponent<T>(newRecursion);
comp = item.GetComponentInRecursionChildren<T>(newRecursion);
yield return comp;
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD><D1B0>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD><D1B0>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// ע<><D7A2><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2>ҡ<EFBFBD>
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="trans"></param>
/// <param name="depth"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>0<EFBFBD><30>ʾ<EFBFBD><CABE><EFBFBD>ڵ<EFBFBD>һ<EFBFBD>Ӽ<EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD>ң<EFBFBD>1<EFBFBD><EFBFBD>ʾ<EFBFBD>ڰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>Ա<EFBFBD><EFBFBD>Ѱ<EFBFBD><EFBFBD></param>
/// <param name="depth"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>0<EFBFBD><30>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>Ӽ<EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD>ң<EFBFBD>1<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>Ӽ<EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD>ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӽ<EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD>ң<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
/// <returns></returns>
public static T GetChildrenRecursionComponent<T>(this Transform trans, int depth = 1)
public static T GetComponentInRecursionChildren<T>(this Transform trans, int depth = 1)
where T : Component
{
T result;
@@ -61,7 +146,7 @@ namespace XericLibrary.Runtime.MacroLibrary
{
result = item.GetComponent<T>();
if(result == null && newDepth > 0)
result = item.GetChildrenRecursionComponent<T>(newDepth);
result = item.GetComponentInRecursionChildren<T>(newDepth);
if(result != null)
return result;
}
@@ -125,5 +210,56 @@ namespace XericLibrary.Runtime.MacroLibrary
#endregion
#region 2023/10 <EFBFBD><EFBFBD>ʱ
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="trans"></param>
/// <param name="recursion"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>0<EFBFBD><30>ʾ<EFBFBD><CABE><EFBFBD>ڴ˴<DAB4>Ѱ<EFBFBD>ң<EFBFBD>1<EFBFBD><31>ʾ<EFBFBD>ڰ<EFBFBD><DAB0><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>г<EFBFBD>Ա<EFBFBD><D4B1>Ѱ<EFBFBD><D1B0></param>
/// <returns></returns>
[Obsolete("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϲ<EFBFBD><CFB9>򣬽<EFBFBD>ʹ<EFBFBD><CAB9>GetComponentsInRecursionChildren<65>滻")]
public static IEnumerable<T> GetChildrenRecursionComponents<T>(this Transform trans, int recursion = 1)
where T : Component
{
int newRecursion = recursion - 1;
foreach(var item in trans.GetChildren())
{
var comp = item.GetComponent<T>();
if(comp == null && newRecursion > 0)
comp = item.GetChildrenRecursionComponent<T>(newRecursion);
yield return comp;
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD><D1B0>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="trans"></param>
/// <param name="depth"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>0<EFBFBD><30>ʾ<EFBFBD><CABE><EFBFBD>ڵ<EFBFBD>һ<EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD>Ѱ<EFBFBD>ң<EFBFBD>1<EFBFBD><31>ʾ<EFBFBD>ڰ<EFBFBD><DAB0><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>г<EFBFBD>Ա<EFBFBD><D4B1>Ѱ<EFBFBD><D1B0></param>
/// <returns></returns>
[Obsolete("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϲ<EFBFBD><CFB9>򣬽<EFBFBD>ʹ<EFBFBD><CAB9>GetComponentsInRecursionChildren<65>滻")]
public static T GetChildrenRecursionComponent<T>(this Transform trans, int depth = 1)
where T : Component
{
T result;
int newDepth = depth - 1;
foreach(var item in trans.GetChildren())
{
result = item.GetComponent<T>();
if(result == null && newDepth > 0)
result = item.GetChildrenRecursionComponent<T>(newDepth);
if(result != null)
return result;
}
return null;
}
#endregion
}
}

View File

@@ -98,6 +98,7 @@ namespace XericLibrary.Runtime.MacroLibrary
/// <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ֵתΪ<D7AA><CEAA><EFBFBD><EFBFBD>Сд<D0A1><D0B4>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>д<EFBFBD><D0B4>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD>ʹ<EFBFBD>ã<EFBFBD>
/// <20><><EFBFBD><EFBFBD> 510<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һʮ<D2BB><CAAE>9009<30><39><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD>ǧ<EFBFBD><C7A7><EFBFBD>ţ<EFBFBD>
/// <20><><EFBFBD><EFBFBD>֧<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ǧ<EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ޣ<EFBFBD>ֻҪ<D6BB><D2AA><EFBFBD><EFBFBD><EFBFBD>׸<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>ɡ<EFBFBD>
/// <20><><EFBFBD><EFBFBD>ȱ<EFBFBD><C8B1><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD>10<31><30>11ʱ<31><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һʮ<D2BB><CAAE>һʮһ<CAAE><D2BB><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><E2B4A6>һ<EFBFBD><D2BB><EFBFBD>Է<EFBFBD><D4B7><EFBFBD><EFBFBD>Ķ<EFBFBD>ϰ<EFBFBD><CFB0>
/// </summary>
/// <param name="number"></param>
/// <returns></returns>
@@ -110,8 +111,47 @@ namespace XericLibrary.Runtime.MacroLibrary
// <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD>
if(number < 0)
guide = "<22><>";
string result;
// <20><><EFBFBD><EFBFBD><E2B4A6>
switch(number)
{
case 10:
result = "ʮ";
break;
case 11:
result = "ʮһ";
break;
case 12:
result = <><CAAE>";
break;
case 13:
result = <><CAAE>";
break;
case 14:
result = <><CAAE>";
break;
case 15:
result = <><CAAE>";
break;
case 16:
result = <><CAAE>";
break;
case 17:
result = <><CAAE>";
break;
case 18:
result = <><CAAE>";
break;
case 19:
result = <><CAAE>";
break;
default:
result = NumberToChinese(Mathf.Abs(number), out var zero);
break;
}
// <20>ϲ<EFBFBD><CFB2><EFBFBD>ʽ<EFBFBD><CABD>
return guide + NumberToChinese(Mathf.Abs(number), out var zero);
return guide + result;
}
#endregion