添加基础枚举扩展
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
89
Runtime/MicroLibrary/MacroList.cs
Normal file
89
Runtime/MicroLibrary/MacroList.cs
Normal 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
|
||||
}
|
||||
}
|
||||
11
Runtime/MicroLibrary/MacroList.cs.meta
Normal file
11
Runtime/MicroLibrary/MacroList.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 696a363a0af92ff428710da4ee9e85a7
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user