2using System.Collections;
3using System.Collections.Generic;
6using System.Reflection;
8using System.Text.RegularExpressions;
11using UnityEngine.Events;
20 public static string lang(
this string s)
31 public static string lang(
this string s,
string ref1,
string ref2 =
null,
string ref3 =
null,
string ref4 =
null,
string ref5 =
null)
33 return Lang.
Parse(s, ref1, ref2, ref3, ref4, ref5);
46 public static string langGame(
this string s,
string ref1,
string ref2 =
null,
string ref3 =
null,
string ref4 =
null)
53 return "(" + str +
")";
56 public static string Bracket(
this string str,
int type = 0)
69 return list[0] + str + list[1];
72 return "_bracketLeft".lang() + str +
"_bracketRight".lang();
76 public static byte[]
ToBytes(
this BitArray bits)
78 byte[] array =
new byte[(bits.Length - 1) / 8 + 1];
79 bits.CopyTo(array, 0);
83 public static bool GetBit(
this byte pByte,
int bitNo)
85 return (pByte & (1 << bitNo)) != 0;
88 public static byte SetBit(
this byte pByte,
int bitNo,
bool value)
92 return Convert.ToByte(pByte & ~(1 << bitNo));
94 return Convert.ToByte(pByte | (1 << bitNo));
97 public static int ToInt3(
this float a)
99 return (
int)(a * 1000f);
104 return (
float)a / 1000f;
109 return (
int)(a * 100f);
114 return (
float)a / 100f;
135 public static bool IsOn(
this int data,
int digit)
139 return bitArray[digit];
144 return (T)Enum.ToObject(typeof(T), value);
149 return (T)Enum.ToObject(typeof(T), value);
152 public static T
ToEnum<T>(
this string value,
bool ignoreCase =
true)
154 return (T)Enum.Parse(typeof(T), value, ignoreCase);
157 public static Type
ToType(
this string value)
159 return Type.GetType(
"Elona." + value +
", Assembly-CSharp");
164 return ((T[])Enum.GetValues(src.GetType())).NextItem(src);
169 return ((T[])Enum.GetValues(src.GetType())).PrevItem(src);
172 public static bool Within(
this int v,
int v2,
int range)
176 return v - v2 < -range;
181 public static bool Within(
this byte v,
byte v2,
byte range)
185 return v - v2 < -range;
190 public static int Clamp(
this int v,
int min,
int max,
bool loop =
false)
194 v = ((!loop) ? min : max);
198 v = ((!loop) ? max : min);
223 return (T)o.GetType().GetField(s).GetValue(o);
228 FieldInfo field = o.GetType().GetField(name);
231 return typeof(T).IsAssignableFrom(field.FieldType);
238 return (T)o.GetType().GetField(name).GetValue(o);
241 public static void SetField<T>(
this object o,
string name, T value)
243 o.GetType().GetField(name).SetValue(o, value);
248 return (T)o.GetType().GetProperty(name).GetValue(o);
253 o.GetType().GetProperty(name).SetValue(o, value);
256 public static void Sort<T>(
this IList<T> list, Comparison<T> comparison)
260 ((List<T>)list).Sort(comparison);
263 List<T> list2 =
new List<T>(list);
264 list2.Sort(comparison);
265 for (
int i = 0; i < list.Count; i++)
271 public static TValue
TryGet<TValue>(
this IList<TValue> array,
int index,
int defIndex = -1)
273 if (array.Count != 0)
275 if (index >= array.Count)
279 if (array.Count <= defIndex)
281 return array[Mathf.Max(0, array.Count - 1)];
283 return array[defIndex];
285 return array[Mathf.Max(0, array.Count - 1)];
287 return array[Math.Max(0, index)];
289 return default(TValue);
292 public static TValue
TryGet<TValue>(
this IList<TValue> array,
int index,
bool returnNull)
294 if (index >= array.Count)
296 return default(TValue);
305 return array.Length == 0;
310 public static int IndexOf(
this IList<Component> list, GameObject go)
316 for (
int i = 0; i < list.Count; i++)
318 if (list[i].gameObject == go)
326 public static TValue
Move<TValue>(
this IList<TValue> list, TValue target,
int a)
328 int num = list.IndexOf(target);
332 num2 = list.Count - 1;
334 if (num2 >= list.Count)
339 list.Insert(num2, target);
345 return list.ToList();
348 public static void Each<TValue>(
this IList<TValue> list, Action<TValue> action)
350 for (
int num = list.Count - 1; num >= 0; num--)
358 int num = list.Count;
363 TValue value = list[num];
364 list[num] = list[index];
372 TValue value =
default(TValue);
373 if (key !=
null && source.TryGetValue(key, out value))
382 TValue value =
default(TValue);
383 if (key !=
null && source.TryGetValue(key, out value))
387 return source[key_fallback];
392 TValue val = dict.TryGetValue(key);
395 val = ((func !=
null) ? func() : Activator.CreateInstance<TValue>());
403 TKey[] array =
new TKey[dict.Keys.Count];
404 dict.Keys.CopyTo(array, 0);
410 TValue[] array =
new TValue[dict.Keys.Count];
411 dict.Values.CopyTo(array, 0);
417 int num = ie.Count();
422 return ie.ElementAt(
Rand.
rnd(num));
427 if (source.Count != 0)
429 return source.ElementAt(
Rand.
rnd(source.Count)).Value;
431 return default(TValue);
436 if (source.Count != 0)
438 return source[
Rand.
rnd(source.Count)];
440 return default(TValue);
445 return source.RandomItem(source.IndexOf(exclude));
450 if (source.Count > 1)
457 while (num == exclude);
460 if (source.Count == 1)
464 return default(TValue);
467 public static TValue
RandomItem<TValue>(
this IList<TValue> source, Func<TValue, bool> funcValid, TValue defaultValue =
default(TValue))
469 for (
int i = 0; i < 100; i++)
471 TValue val = source[
Rand.
rnd(source.Count)];
482 if (source.Count == 0)
484 return default(TValue);
486 if (source.Count == 1)
491 foreach (TValue
item in source)
493 num += getWeight(
item);
497 foreach (TValue item2
in source)
499 num += getWeight(item2);
505 return source.First();
510 if (source.Count != 0)
512 return source[divider % source.Count];
514 return default(TValue);
521 return default(TValue);
523 return source[source.First().Key];
528 if (source.Count != 0)
530 return source[source.Count - 1];
532 return default(TValue);
538 if (index >= source.Count)
542 if (source.Count != 0)
544 return source[index];
546 return default(TValue);
555 int num = source.IndexOf(val) + 1;
556 if (num >= source.Count)
565 int num = source.IndexOf(val) + 1;
566 if (num >= source.Count)
570 if (source.Count != 0)
574 return default(TValue);
579 int num = source.IndexOf(val) - 1;
582 num = source.Count - 1;
584 if (source.Count != 0)
588 return default(TValue);
597 else if (i >= source.Count)
599 i = source.Count - 1;
606 List<T> list =
new List<T>();
607 foreach (
object value
in source.Values)
619 dic =
new Dictionary<string, T>();
620 for (
int i = 0; i < list.Count; i++)
622 dic.Add(list[i].name, list[i].value);
626 public static T
FindMax<T>(
this List<T> list, Func<T, int> func)
628 int num =
int.MinValue;
629 T result =
default(T);
630 foreach (T
item in list)
632 int num2 = func(
item);
642 public static void Set<T1, T2>(
this Dictionary<T1, T2> dic, Dictionary<T1, T2> from)
645 foreach (KeyValuePair<T1, T2>
item in from)
653 if (
string.IsNullOrEmpty(text))
655 return new string[0];
657 return text.Split(
new string[3] {
"\r\n",
"\n",
"\r" }, StringSplitOptions.None);
662 if (
string.IsNullOrEmpty(text))
666 return text.Replace(
"\r",
"").Replace(
"\n",
"");
671 if (
string.IsNullOrEmpty(text))
675 return Regex.Replace(text,
"<.*?>",
"");
678 public static int Calc(
this string str,
int power = 0,
int ele = 0,
int p2 = 0)
680 return Cal.Calcuate(str.Replace(
"p2", p2.ToString() ??
"").Replace(
"p", power.ToString() ??
"").Replace(
"e", ele.ToString() ??
"")
686 return str.ToInt(typeof(T));
689 public static int ToInt(
this string str, Type type)
691 FieldInfo field = type.GetField(str, BindingFlags.Static | BindingFlags.Public | BindingFlags.FlattenHierarchy);
694 Debug.LogError(
"Field is null:" + str +
"/" + type);
697 return (
int)field.GetValue(
null);
700 public static int ToInt(
this string str)
702 if (
int.TryParse(str, out var result))
709 public static long ToLong(
this string str)
711 if (
long.TryParse(str, out var result))
723 if (!
float.TryParse(str, out result))
725 Debug.Log(
"exception: ToFlat1" + str);
731 Debug.Log(
"exception: ToFlat2" + str);
746 public static string StripPun(
this string str,
bool stripComma,
bool insertSpaceForComma =
false)
748 StringBuilder stringBuilder =
new StringBuilder();
749 foreach (
char c
in str)
755 if (insertSpaceForComma)
757 stringBuilder.Append(
'\u3000');
762 stringBuilder.Append(c);
767 stringBuilder.Append(c);
770 return stringBuilder.ToString();
773 public static string Repeat(
this string str,
int count)
775 StringBuilder stringBuilder =
new StringBuilder();
776 for (
int i = 0; i < Mathf.Abs(count); i++)
778 stringBuilder.Append(str);
780 return stringBuilder.ToString();
785 HashSet<char> brackets =
new HashSet<char> {
'"',
'「',
'」',
'“',
'”' };
786 return string.Concat(str.Where((
char c) => !brackets.Contains(c)));
791 if (!s.Contains(
"." + ext))
793 return s +
"." + ext;
807 public static string IsEmpty(
this string str,
string defaultStr)
809 if (str !=
null && !(str ==
""))
818 while (text.EndsWith(Environment.NewLine))
820 text = text.Substring(0, text.Length - Environment.NewLine.Length);
827 string[] array = str.Split(separator);
828 int[] array2 =
new int[array.Length];
829 for (
int i = 0; i < array.Length; i++)
831 array2[i] =
int.Parse(array[i]);
838 return str.Split(Environment.NewLine.ToCharArray());
841 public static bool Contains(
this string[] strs,
string id)
843 if (strs ==
null || strs.Length == 0)
847 for (
int i = 0; i < strs.Length; i++)
857 public static string Evalute(
this string[] array,
float val)
859 return array[(int)Mathf.Clamp((
float)(array.Length - 1) * val, 0f, array.Length - 1)];
871 return a / 1000 +
"K";
881 text = a / 1000000 +
"M";
890 return a / 1000 +
"K";
892 text2 = a.ToString();
900 text2 = a / 1000000 +
"M";
915 public static string ToText(
this int a,
bool skipIfZero =
true)
918 if (!(a == 0 && skipIfZero))
939 return s +
"<color=" + c.ToHex() +
">" + txt +
"</color>";
944 return "<color=" + c.ToHex() +
">" + s +
"</color>";
947 public static string TagSize(
this string s,
string txt,
int size)
949 return s +
"<size=" + size +
">" + txt +
"</size>";
952 public static string TagSize(
this string s,
int size)
954 return "<size=" + size +
">" + s +
"</size>";
957 public static bool HasTag(
this string s,
string id,
char splitter =
'/')
959 return s.Split(splitter).Contains(
id);
962 public static string SetTag(
this string s,
string id,
bool enable,
char splitter =
'/')
964 s = ((!enable) ? s.RemoveTag(
id, splitter) : s.AddTag(
id, splitter));
968 public static string AddTag(
this string s,
string id,
char splitter =
'/')
970 if (!s.HasTag(
id, splitter))
972 s = s + (s.IsEmpty() ?
"" : ((object)splitter))?.ToString() + id;
977 public static string RemoveTag(
this string s,
string id,
char splitter =
'/')
979 string[] array = s.Split(splitter);
981 string[] array2 = array;
982 foreach (
string text
in array2)
986 s.AddTag(text, splitter);
994 return fileInfo.Directory.FullName +
"/" + Path.GetFileNameWithoutExtension(fileInfo.Name);
999 return new FileInfo(path).GetFullFileNameWithoutExtension();
1004 if (s ==
"talisman")
1017 char c = s.ToLower()[0];
1018 s = ((c ==
'a' || c ==
'i' || c ==
'u' || c ==
'e' || c ==
'o') ?
"an " :
"a ") + s;
1029 string text = ((num >= 2) ? (num.ToFormat() +
" ") : ((c ==
'a' || c ==
'i' || c ==
'u' || c ==
'e' || c ==
'o') ?
"an " :
"a "));
1032 s = ((replace.IsEmpty() || !s.Contains(replace) || s.Contains(
"limestone stone")) ?
Pluralize(s) : s.Replace(replace,
Pluralize(replace)));
1036 ArticleStyle.The =>
"_the".lang().ToTitleCase() +
" " + ((num > 1) ? (num +
" ") :
"") + s,
1037 ArticleStyle.None => ((num > 1) ? (num.ToFormat() +
" ") :
"") + s.ToTitleCase(),
1042 public static string ToTitleCase(
this string s,
bool wholeText =
false)
1048 char[] array = s.ToCharArray();
1050 for (
int i = 0; i < array.Length; i++)
1054 array[i] =
char.ToUpper(array[i]);
1061 if (array[i] ==
' ')
1066 return new string(array);
1069 public static void LoopTail<T>(
this List<T> list,
bool vertical =
false) where T : Selectable
1073 Navigation navigation = list[0].navigation;
1074 Navigation navigation2 = list[list.Count - 1].navigation;
1077 navigation.selectOnUp = list[list.Count - 1];
1078 navigation2.selectOnDown = list[0];
1082 navigation.selectOnLeft = list[list.Count - 1];
1083 navigation2.selectOnRight = list[0];
1085 list[0].navigation = navigation;
1086 list[list.Count - 1].navigation = navigation2;
1090 public static void SetNavigation(
this Component a, Component b,
bool vertical =
false)
1096 Selectable component = a.GetComponent<Selectable>();
1097 Selectable component2 = b.GetComponent<Selectable>();
1098 if ((
bool)component && (bool)component2)
1100 Navigation navigation = component.navigation;
1101 Navigation navigation2 = component2.navigation;
1104 navigation.selectOnUp = component2;
1105 navigation2.selectOnDown = component;
1109 navigation.selectOnLeft = component2;
1110 navigation2.selectOnRight = component;
1112 component.navigation = navigation;
1113 component2.navigation = navigation2;
1117 public static void LoopSelectable(
this List<Selectable> sels,
bool vertical =
true,
bool horizonal =
true,
bool asGroup =
true)
1119 for (
int i = 0; i < sels.Count; i++)
1121 Selectable selectable = sels[i];
1122 Selectable selectable2 = sels[0];
1123 Navigation navigation = selectable.navigation;
1126 navigation.selectOnRight = ((i + 1 < sels.Count) ? sels[i + 1] : selectable2);
1130 for (
int j = i + 1; j < sels.Count; j++)
1132 if (sels[j].transform.position.y < selectable.transform.position.y)
1134 selectable2 = sels[j];
1141 selectable2 = ((i + 1 < sels.Count) ? sels[i + 1] : selectable2);
1145 navigation.selectOnDown = selectable2;
1147 selectable.navigation = navigation;
1149 for (
int num = sels.Count - 1; num >= 0; num--)
1151 Selectable selectable3 = sels[num];
1152 Selectable selectable4 = sels[sels.Count - 1];
1153 Navigation navigation2 = selectable3.navigation;
1156 navigation2.selectOnLeft = ((num > 0) ? sels[num - 1] : selectable4);
1160 int num2 = sels.Count - 1;
1161 for (
int num3 = num - 1; num3 >= 0; num3--)
1163 if (sels[num3].transform.position.y > selectable3.transform.position.y)
1170 while (num4 >= 0 && !(sels[num4].transform.position.y > sels[num2].transform.position.y))
1172 selectable4 = sels[num4];
1178 selectable4 = ((num > 0) ? sels[num - 1] : selectable4);
1182 navigation2.selectOnUp = ((selectable4 == selectable3) ? sels[sels.Count - 1] : selectable4);
1184 navigation2.mode = Navigation.Mode.Explicit;
1185 selectable3.navigation = navigation2;
1189 public static void LoopSelectable(
this Transform l,
bool vertical =
true,
bool horizonal =
true,
bool asGroup =
true)
1191 List<Selectable> list = l.GetComponentsInChildren<Selectable>().ToList();
1192 for (
int num = list.Count - 1; num >= 0; num--)
1194 if (!list[num].interactable || list[num].navigation.mode == Navigation.Mode.None)
1199 list.LoopSelectable(vertical, horizonal, asGroup);
1205 ColorUtility.TryParseHtmlString(
"#" + s, out color);
1211 c.color =
new Color(c.color.r, c.color.g, c.color.b, a);
1216 c.color =
new Color(c.color.r, c.color.g, c.color.b, a);
1227 return new Color(c.r * mtp + add, c.g * mtp + add, c.b * mtp + add, c.a);
1232 return "<color=" +
$"#{(int)(c.r * 255f):X2}{(int)(c.g * 255f):X2}{(int)(c.b * 255f):X2}" +
">";
1237 return $"#{(int)(c.r * 255f):X2}{(int)(c.g * 255f):X2}{(int)(c.b * 255f):X2}";
1242 b.onClick.RemoveAllListeners();
1243 b.onClick.AddListener(delegate
1251 e.RemoveAllListeners();
1252 e.AddListener(delegate
1258 public static void SetAlpha(
this Text text,
float aloha = 1f)
1260 text.color =
new Color(text.color.r, text.color.g, text.color.b, aloha);
1263 public static void SetSlider(
this Slider slider,
float value, Func<float, string> action,
bool notify)
1265 slider.SetSlider(value, action, -1, -1, notify);
1268 public static void SetSlider(
this Slider slider,
float value, Func<float, string> action,
int min = -1,
int max = -1,
bool notify =
true)
1270 slider.onValueChanged.RemoveAllListeners();
1271 slider.onValueChanged.AddListener(delegate(
float a)
1273 slider.GetComponentInChildren<Text>(includeInactive:
true).text = action(a);
1277 slider.minValue = min;
1278 slider.maxValue = max;
1282 slider.value = value;
1286 slider.SetValueWithoutNotify(value);
1288 slider.GetComponentInChildren<Text>(includeInactive:
true).text = action(value);
1293 T val = t.gameObject.GetComponent<T>();
1296 val = t.gameObject.AddComponent<T>();
1301 public static RectTransform
Rect(
this Component c)
1303 return c.transform as RectTransform;
1306 public static void CopyRect(
this RectTransform r, RectTransform t)
1309 r.sizeDelta = t.sizeDelta;
1310 r.anchorMin = t.anchorMin;
1311 r.anchorMax = t.anchorMax;
1312 r.anchoredPosition = t.anchoredPosition;
1317 c.SetActive(!c.gameObject.activeSelf);
1322 if (c.gameObject.activeSelf != enable)
1324 c.gameObject.SetActive(enable);
1328 public static void SetActive(
this Component c,
bool enable, Action<bool> onChangeState)
1330 if (c.gameObject.activeSelf != enable)
1332 c.gameObject.SetActive(enable);
1333 onChangeState(enable);
1339 return go.GetComponentInChildren<Selectable>();
1345 foreach (Transform
item in obj.transform)
1347 item.gameObject.SetLayerRecursively(layer);
1353 Selectable selectable = (obj ? obj.GetComponent<Selectable>() :
null);
1354 if ((
bool)selectable)
1356 return selectable.interactable;
1361 public static bool IsChildOf(
this GameObject c, GameObject root)
1363 if (c.transform == root.transform)
1367 if ((
bool)c.transform.parent)
1369 return c.transform.parent.gameObject.IsChildOf(root);
1376 return c.gameObject.scene.name ==
null;
1379 public static T
CreateMold<T>(
this Component c,
string name =
null) where T : Component
1382 for (
int i = 0; i < c.transform.childCount; i++)
1384 T component = c.transform.GetChild(i).GetComponent<T>();
1385 if ((
bool)component && (name.IsEmpty() || name == component.name))
1387 component.gameObject.SetActive(value:
false);
1392 c.DestroyChildren();
1396 public static Transform
Find(
this Component c,
string name =
null)
1398 return c.Find<Transform>(name);
1401 public static T
Find<T>(
this Component c,
string name =
null,
bool recursive =
false) where T : Component
1405 T[] componentsInChildren = c.transform.GetComponentsInChildren<T>();
1406 foreach (T val
in componentsInChildren)
1408 if (name ==
null || name == val.name)
1415 for (
int j = 0; j < c.transform.childCount; j++)
1417 T component = c.transform.GetChild(j).GetComponent<T>();
1418 if ((
bool)component && (name ==
null || name == component.name))
1426 public static GameObject
FindTagInParents(
this Component c,
string tag,
bool includeInactive =
true)
1428 Transform transform = c.transform;
1429 for (
int i = 0; i < transform.childCount; i++)
1431 Transform child = transform.GetChild(i);
1432 if ((includeInactive || child.gameObject.activeSelf) && child.tag == tag)
1434 return child.gameObject;
1437 if ((
bool)transform.parent)
1439 return transform.parent.FindTagInParents(tag, includeInactive);
1446 for (
int i = 0; i < c.childCount; i++)
1448 T component = c.GetChild(i).GetComponent<T>();
1449 if ((
bool)component)
1459 List<T> list =
new List<T>();
1460 Transform transform = comp.transform;
1461 for (
int i = 0; i < transform.childCount; i++)
1463 T component = transform.GetChild(i).GetComponent<T>();
1464 if ((
bool)component && (includeInactive || component.gameObject.activeInHierarchy))
1466 list.Add(component);
1474 List<T> list =
new List<T>();
1475 Transform transform = comp.transform;
1476 for (
int i = 0; i < transform.childCount; i++)
1478 T component = transform.GetChild(i).GetComponent<T>();
1479 if ((
bool)component && (includeInactive || component.gameObject.activeInHierarchy))
1481 list.Add(component);
1489 Transform transform = comp.transform;
1490 for (
int i = 0; i < transform.childCount; i++)
1492 T component = transform.GetChild(i).GetComponent<T>();
1493 if ((
bool)component)
1501 public static void DestroyChildren(
this Component component,
bool destroyInactive =
false,
bool ignoreDestroy =
true)
1503 if (!component || !component.transform)
1505 Debug.LogWarning(
"DestroyChlidren:" + component);
1508 for (
int num = component.transform.childCount - 1; num >= 0; num--)
1510 GameObject gameObject = component.transform.GetChild(num).gameObject;
1511 if ((!ignoreDestroy || !(gameObject.tag ==
"IgnoreDestroy")) && (destroyInactive || gameObject.activeSelf))
1513 UnityEngine.Object.DestroyImmediate(gameObject);
1520 return RectTransformUtility.RectangleContainsScreenPoint(r, Input.mousePosition, cam);
1527 foreach (Transform
item in c.transform)
1529 if (
item is RectTransform)
1531 item.RebuildLayout(recursive:
true);
1535 LayoutRebuilder.ForceRebuildLayoutImmediate(c.transform as RectTransform);
1541 if ((
bool)c.transform.parent && !c.transform.parent.GetComponent<T>())
1543 c.transform.parent.RebuildLayoutTo<T>();
1550 if (!(c == target) && (
bool)c.transform.parent)
1552 c.transform.parent.RebuildLayoutTo(target);
1556 public static void SetRect(
this RectTransform r,
float x,
float y,
float w,
float h,
float pivotX,
float pivotY,
float minX,
float minY,
float maxX,
float maxY)
1558 r.SetPivot(pivotX, pivotY);
1559 r.SetAnchor(minX, minY, maxX, maxY);
1562 r.sizeDelta =
new Vector2(w, h);
1564 r.anchoredPosition =
new Vector2((x == -1f) ? r.anchoredPosition.x : x, (y == -1f) ? r.anchoredPosition.y : y);
1567 public static void SetPivot(
this RectTransform r,
float x,
float y)
1569 r.pivot =
new Vector2(x, y);
1572 public static void SetAnchor(
this RectTransform r,
float minX,
float minY,
float maxX,
float maxY)
1574 r.anchorMin =
new Vector2(minX, minY);
1575 r.anchorMax =
new Vector2(maxX, maxY);
1583 _rect.SetAnchor(0.5f, 1f, 0.5f, 1f);
1586 _rect.SetAnchor(0.5f, 0f, 0.5f, 0f);
1589 _rect.SetAnchor(0f, 1f, 0f, 1f);
1592 _rect.SetAnchor(1f, 1f, 1f, 1f);
1595 _rect.SetAnchor(0f, 0f, 0f, 0f);
1598 _rect.SetAnchor(1f, 0f, 1f, 0f);
1601 _rect.SetAnchor(0f, 0.5f, 0f, 0.5f);
1604 _rect.SetAnchor(1f, 0.5f, 1f, 0.5f);
1607 _rect.SetAnchor(0.5f, 0.5f, 0.5f, 0.5f);
1614 Vector3 position = _rect.position;
1615 _rect._SetAnchor((anchor ==
RectPosition.Auto) ? _rect.GetAnchor() : anchor);
1616 _rect.position = position;
1621 Vector3 position = _rect.position;
1622 int width = Screen.width;
1623 int height = Screen.height;
1624 bool flag = position.y > (float)height * 0.5f;
1625 if (position.x > (
float)width * 0.3f && position.x < (float)width * 0.7f)
1627 if (position.y > (
float)height * 0.3f && position.y < (float)height * 0.7f)
1637 if (position.x < (
float)width * 0.5f)
1654 return trans.GetChild(trans.childCount - 1);
1659 return new Vector2(
self.x,
self.z);
1662 public static void SetScale(
this SpriteRenderer renderer,
float size)
1664 float x = renderer.bounds.size.x;
1665 float y = renderer.bounds.size.y;
1666 float x2 = size / x;
1667 float y2 = size / y;
1668 renderer.transform.localScale =
new Vector3(x2, y2, 1f);
1673 if (
object.Equals(
forward, Vector2.up))
1677 object.Equals(
forward, Vector2.right);
1683 self.LookAt2D(target.position,
forward);
1689 Vector3 vector = target -
self.position;
1690 float num = Mathf.Atan2(vector.y, vector.x) * 57.29578f;
1691 self.rotation = Quaternion.AngleAxis(num - forwardDiffPoint, Vector3.forward);
1694 public static float Distance(
this Transform t, Vector2 pos)
1696 return Vector3.Distance(t.position, pos);
1699 public static Vector3
Plus(
this Vector3 v, Vector2 v2)
1706 public static Vector3
SetZ(
this Vector3 v,
float a)
1712 public static Vector3
SetY(
this Vector3 v,
float a)
1718 public static Vector3
PlusX(
this Vector3 v,
float a)
1724 public static Vector3
PlusY(
this Vector3 v,
float a)
1730 public static Vector3
PlusZ(
this Vector3 v,
float a)
1736 public static void SetPosition(
this Transform transform,
float x,
float y,
float z)
1744 vector3.Set(x, transform.position.y, transform.position.z);
1750 vector3.Set(transform.position.x, y, transform.position.z);
1756 vector3.Set(transform.position.x, transform.position.y, z);
1760 public static void AddPosition(
this Transform transform,
float x,
float y,
float z)
1762 vector3.Set(transform.position.x + x, transform.position.y + y, transform.position.z + z);
1768 vector3.Set(transform.position.x + x, transform.position.y, transform.position.z);
1774 vector3.Set(transform.position.x, transform.position.y + y, transform.position.z);
1780 vector3.Set(transform.position.x, transform.position.y, transform.position.z + z);
1787 transform.localPosition =
vector3;
1792 vector3.Set(x, transform.localPosition.y, transform.localPosition.z);
1793 transform.localPosition =
vector3;
1798 vector3.Set(transform.localPosition.x, y, transform.localPosition.z);
1799 transform.localPosition =
vector3;
1804 vector3.Set(transform.localPosition.x, transform.localPosition.y, z);
1805 transform.localPosition =
vector3;
1810 vector3.Set(transform.localPosition.x + x, transform.localPosition.y + y, transform.localPosition.z + z);
1811 transform.localPosition =
vector3;
1816 vector3.Set(transform.localPosition.x + x, transform.localPosition.y, transform.localPosition.z);
1817 transform.localPosition =
vector3;
1822 vector3.Set(transform.localPosition.x, transform.localPosition.y + y, transform.localPosition.z);
1823 transform.localPosition =
vector3;
1828 vector3.Set(transform.localPosition.x, transform.localPosition.y, transform.localPosition.z + z);
1829 transform.localPosition =
vector3;
1832 public static void SetLocalScale(
this Transform transform,
float x,
float y,
float z)
1835 transform.localScale =
vector3;
1840 vector3.Set(x, transform.localScale.y, transform.localScale.z);
1841 transform.localScale =
vector3;
1846 vector3.Set(transform.localScale.x, y, transform.localScale.z);
1847 transform.localScale =
vector3;
1852 vector3.Set(transform.localScale.x, transform.localScale.y, z);
1853 transform.localScale =
vector3;
1856 public static void AddLocalScale(
this Transform transform,
float x,
float y,
float z)
1858 vector3.Set(transform.localScale.x + x, transform.localScale.y + y, transform.localScale.z + z);
1859 transform.localScale =
vector3;
1864 vector3.Set(transform.localScale.x + x, transform.localScale.y, transform.localScale.z);
1865 transform.localScale =
vector3;
1870 vector3.Set(transform.localScale.x, transform.localScale.y + y, transform.localScale.z);
1871 transform.localScale =
vector3;
1876 vector3.Set(transform.localScale.x, transform.localScale.y, transform.localScale.z + z);
1877 transform.localScale =
vector3;
1880 public static void SetEulerAngles(
this Transform transform,
float x,
float y,
float z)
1883 transform.eulerAngles =
vector3;
1888 vector3.Set(x, transform.localEulerAngles.y, transform.localEulerAngles.z);
1889 transform.eulerAngles =
vector3;
1894 vector3.Set(transform.localEulerAngles.x, y, transform.localEulerAngles.z);
1895 transform.eulerAngles =
vector3;
1900 vector3.Set(transform.localEulerAngles.x, transform.localEulerAngles.y, z);
1901 transform.eulerAngles =
vector3;
1904 public static void AddEulerAngles(
this Transform transform,
float x,
float y,
float z)
1906 vector3.Set(transform.eulerAngles.x + x, transform.eulerAngles.y + y, transform.eulerAngles.z + z);
1907 transform.eulerAngles =
vector3;
1912 vector3.Set(transform.eulerAngles.x + x, transform.eulerAngles.y, transform.eulerAngles.z);
1913 transform.eulerAngles =
vector3;
1918 vector3.Set(transform.eulerAngles.x, transform.eulerAngles.y + y, transform.eulerAngles.z);
1919 transform.eulerAngles =
vector3;
1924 vector3.Set(transform.eulerAngles.x, transform.eulerAngles.y, transform.eulerAngles.z + z);
1925 transform.eulerAngles =
vector3;
1931 transform.localEulerAngles =
vector3;
1936 vector3.Set(x, transform.localEulerAngles.y, transform.localEulerAngles.z);
1937 transform.localEulerAngles =
vector3;
1942 vector3.Set(transform.localEulerAngles.x, y, transform.localEulerAngles.z);
1943 transform.localEulerAngles =
vector3;
1948 vector3.Set(transform.localEulerAngles.x, transform.localEulerAngles.y, z);
1949 transform.localEulerAngles =
vector3;
1954 vector3.Set(transform.localEulerAngles.x + x, transform.localEulerAngles.y + y, transform.localEulerAngles.z + z);
1955 transform.localEulerAngles =
vector3;
1960 vector3.Set(transform.localEulerAngles.x + x, transform.localEulerAngles.y, transform.localEulerAngles.z);
1961 transform.localEulerAngles =
vector3;
1966 vector3.Set(transform.localEulerAngles.x, transform.localEulerAngles.y + y, transform.localEulerAngles.z);
1967 transform.localEulerAngles =
vector3;
1972 vector3.Set(transform.localEulerAngles.x, transform.localEulerAngles.y, transform.localEulerAngles.z + z);
1973 transform.localEulerAngles =
vector3;
1980 m.EnableKeyword(
id);
1984 m.DisableKeyword(
id);
1990 for (
int num = items.Count - 1; num >= 0; num--)
1998 int num = items.Count - 1;
1999 while (num >= 0 && !action(items[num]))
2009 return 360f - (0f - angle) % 360f;
2011 return angle % 360f;
2021 string name = s.name;
2022 T val = UnityEngine.Object.Instantiate(s);
2029 Type typeFromHandle = typeof(UnityEventBase);
2030 Assembly assembly = Assembly.GetAssembly(typeFromHandle);
2031 Type type = assembly.GetType(
"UnityEngine.Events.InvokableCallList");
2032 Type type2 = assembly.GetType(
"UnityEngine.Events.BaseInvokableCall");
2033 Type type3 = typeof(List<>).MakeGenericType(type2);
2034 FieldInfo field = typeFromHandle.GetField(
"m_Calls", BindingFlags.Instance | BindingFlags.NonPublic);
2035 FieldInfo field2 = type.GetField(
"m_RuntimeCalls", BindingFlags.Instance | BindingFlags.NonPublic);
2036 object value = field.GetValue(unityEvent);
2037 object value2 = field2.GetValue(value);
2038 return (
int)type3.GetProperty(
"Count").GetValue(value2,
null);
static string TryAddExtension(this string s, string ext)
static string StripLastPun(this string str)
static byte SetBit(this byte pByte, int bitNo, bool value)
static T GetComponentInChildrenExcludSelf< T >(this Transform c)
static int[] SplitToInts(this string str, char separator)
static void SetEulerAnglesZ(this Transform transform, float z)
static T CreateMold< T >(this Component c, string name=null)
static void SetAnchor(this RectTransform r, float minX, float minY, float maxX, float maxY)
static T GetField< T >(this object o, string name)
static void SetPosition(this Transform transform, float x, float y, float z)
static string TagColor(this string s, Color c, string txt)
static void SetEulerAnglesX(this Transform transform, float x)
static int NextIndex< TValue >(this IList< TValue > source, TValue val)
static string RemoveAllTags(this string text)
static int ClampMax(this int v, int max)
static void Each< TValue >(this IList< TValue > list, Action< TValue > action)
static void AddLocalPosition(this Transform transform, float x, float y, float z)
static T PrevEnum< T >(this T src)
static string langGame(this string s, string ref1, string ref2=null, string ref3=null, string ref4=null)
static string Pluralize(string s)
static TKey[] CopyKeys< TKey, TValue >(this IDictionary< TKey, TValue > dict)
static void AddLocalEulerAnglesY(this Transform transform, float y)
static IList< TValue > Shuffle< TValue >(this IList< TValue > list)
static string Parentheses(this string str)
static void AddLocalScale(this Transform transform, float x, float y, float z)
static string ToTitleCase(this string s, bool wholeText=false)
static T Find< T >(this Component c, string name=null, bool recursive=false)
static TValue Clamp< TValue >(this IList< TValue > source, int i)
static TValue TryGetValue< TKey, TValue >(this IDictionary< TKey, TValue > source, TKey key, TValue fallback=default(TValue))
static void SetLocalEulerAngles(this Transform transform, float x, float y, float z)
static string ToFormat(this int a)
static void LoopSelectable(this List< Selectable > sels, bool vertical=true, bool horizonal=true, bool asGroup=true)
static string langPlural(this string s, int i)
static void SetScale(this SpriteRenderer renderer, float size)
static int ToInt(this string str, Type type)
static float GetForwardDiffPoint(Vector2 forward)
static T ToEnum< T >(this int value)
static bool IsChildOf(this GameObject c, GameObject root)
static int Calc(this string str, int power=0, int ele=0, int p2=0)
static void AddLocalScaleY(this Transform transform, float y)
static void SetSlider(this Slider slider, float value, Func< float, string > action, int min=-1, int max=-1, bool notify=true)
static string StripPun(this string str, bool stripComma, bool insertSpaceForComma=false)
static int IndexOf(this IList< Component > list, GameObject go)
static Vector3 SetY(this Vector3 v, float a)
static void AddPositionX(this Transform transform, float x)
static void LoopTail< T >(this List< T > list, bool vertical=false)
static T GetOrCreate< T >(this Component t)
static bool IsOn(this int data, int digit)
static IList< TValue > Copy< TValue >(this IList< TValue > list)
static float FromInt2(this int a)
static Selectable GetSelectable(this GameObject go)
static string AddArticle(this string s, int num, ArticleStyle style=ArticleStyle.Default, string replace=null)
static void SetLocalPositionZ(this Transform transform, float z)
static void SetLocalEulerAnglesZ(this Transform transform, float z)
static void RebuildLayoutTo(this Component c, Component target)
static bool IsEmpty(this string str)
static bool IsPrefab(this Component c)
static void SetActive(this Component c, bool enable)
static void ToDictionary< T >(this IList< UPair< T > > list, ref Dictionary< string, T > dic)
static string RemoveTag(this string s, string id, char splitter='/')
static void AddEulerAnglesZ(this Transform transform, float z)
static void SetProperty< T >(this object o, string name, T value)
static bool Within(this byte v, byte v2, byte range)
static void SetAlpha(this Text text, float aloha=1f)
static void ToggleActive(this Component c)
static bool Contains(this string[] strs, string id)
static int GetRuntimeEventCount(this UnityEventBase unityEvent)
static string[] SplitByNewline(this string text)
static void SetLayerRecursively(this GameObject obj, int layer)
static void SetActive(this Component c, bool enable, Action< bool > onChangeState)
static void SetLocalEulerAnglesY(this Transform transform, float y)
static bool Within(this int v, int v2, int range)
static Vector2 ToVector2(this Vector3 self)
static bool HasTag(this string s, string id, char splitter='/')
static void LoopSelectable(this Transform l, bool vertical=true, bool horizonal=true, bool asGroup=true)
static string[] langList(this string s)
static Color ToColor(this string s)
static void AddLocalEulerAnglesX(this Transform transform, float x)
static void SetLocalPosition(this Transform transform, float x, float y, float z)
static void AddPositionY(this Transform transform, float y)
static RectPosition GetAnchor(this RectTransform _rect)
static bool GetBit(this byte pByte, int bitNo)
static void ToggleKeyword(this Material m, string id, bool enable)
static string Tag(this Color c)
static T NextEnum< T >(this T src)
static void SetPositionX(this Transform transform, float x)
static void SetLocalScaleX(this Transform transform, float x)
static TValue GetOrCreate< TKey, TValue >(this IDictionary< TKey, TValue > dict, TKey key, Func< TValue > func=null)
static Vector3 PlusY(this Vector3 v, float a)
static bool IsEmpty(this Array array)
static T GetProperty< T >(this object o, string name)
static void SetLocalPositionX(this Transform transform, float x)
static void SetLocalEulerAnglesX(this Transform transform, float x)
static float Distance(this Transform t, Vector2 pos)
static void AddLocalScaleX(this Transform transform, float x)
static float FromInt3(this int a)
static void AddEulerAngles(this Transform transform, float x, float y, float z)
static string TagSize(this string s, int size)
static void AddLocalScaleZ(this Transform transform, float z)
static void SetAlpha(this RawImage c, float a)
static void AddEulerAnglesX(this Transform transform, float x)
static Transform Find(this Component c, string name=null)
static void DestroyChildren(this Component component, bool destroyInactive=false, bool ignoreDestroy=true)
static bool IsInteractable(this GameObject obj)
static void Sort< T >(this IList< T > list, Comparison< T > comparison)
static int ToInt3(this float a)
static TValue RandomItem< TKey, TValue >(this IDictionary< TKey, TValue > source)
static string StripBrackets(this string str)
static string ToHex(this Color c)
static TValue RandomItemWeighted< TValue >(this IList< TValue > source, Func< TValue, float > getWeight)
static string lang(this string s)
static float ToFloat(this string str)
static Vector3 SetZ(this Vector3 v, float a)
static void AddLocalEulerAnglesZ(this Transform transform, float z)
static bool IsNull(this object o)
static void SetAlpha(this Image c, float a)
static void SetAnchor(this RectTransform _rect, RectPosition anchor=RectPosition.Auto)
static bool IsMouseOver(this RectTransform r, Camera cam)
static Vector3 PlusX(this Vector3 v, float a)
static List< T > GetComponentsInDirectChildren< T >(this Transform comp, bool includeInactive=true)
static string RemoveNewline(this string text)
static void SetSlider(this Slider slider, float value, Func< float, string > action, bool notify)
static string langGame(this string s)
static void SetNavigation(this Component a, Component b, bool vertical=false)
static TValue RandomItem< TValue >(this IList< TValue > source)
static void AddLocalEulerAngles(this Transform transform, float x, float y, float z)
static int ClampMin(this int v, int min)
static TValue FirstItem< TKey, TValue >(this IDictionary< TKey, TValue > source)
static void SetPivot(this RectTransform r, float x, float y)
static TValue NextItem< TValue >(this IList< TValue > source, ref int index)
static T FindMax< T >(this List< T > list, Func< T, int > func)
static void SetField< T >(this object o, string name, T value)
static TValue TryGet< TValue >(this IList< TValue > array, int index, int defIndex=-1)
static TValue Move< TValue >(this IList< TValue > list, TValue target, int a)
static T GetComponentInDirectChildren< T >(this Component comp)
static void SetRect(this RectTransform r, float x, float y, float w, float h, float pivotX, float pivotY, float minX, float minY, float maxX, float maxY)
static Type ToType(this string value)
static string AddTag(this string s, string id, char splitter='/')
static void ForeachReverse< T >(this IList< T > items, Action< T > action)
static TValue PrevItem< TValue >(this IList< TValue > source, TValue val)
static void RebuildLayout(this Component c, bool recursive=false)
static Vector3 Plus(this Vector3 v, Vector2 v2)
static GameObject FindTagInParents(this Component c, string tag, bool includeInactive=true)
static string GetFullFileNameWithoutExtension(this string path)
static int ToInt< T >(this string str)
static string ToShortNumber(this int a)
static void SetEulerAnglesY(this Transform transform, float y)
static IPluralize pluralizer
static void AddLocalPositionX(this Transform transform, float x)
static string IsEmpty(this string str, string defaultStr)
static void Set< T1, T2 >(this Dictionary< T1, T2 > dic, Dictionary< T1, T2 > from)
static T RandomItem< T >(this IEnumerable< T > ie)
static T Instantiate< T >(this T s)
static string TagSize(this string s, string txt, int size)
static string Repeat(this string str, int count)
static Transform GetLastChild(this Transform trans)
static int ToInt(this string str)
static void SetPositionY(this Transform transform, float y)
static string ToFormat(this long a)
static string ToText(this int a, bool skipIfZero=true)
static void _SetAnchor(this RectTransform _rect, RectPosition anchor)
static Vector3 Random(this Vector3 v)
static string SetTag(this string s, string id, bool enable, char splitter='/')
static string GetFullFileNameWithoutExtension(this FileInfo fileInfo)
static void SetListener(this Button.ButtonClickedEvent e, Action action)
static void RebuildLayoutTo< T >(this Component c)
static void SetOnClick(this Button b, Action action)
static string Bracket(this string str, int type=0)
static void AddPosition(this Transform transform, float x, float y, float z)
static RectTransform Rect(this Component c)
static void AddLocalPositionZ(this Transform transform, float z)
static long ToLong(this string str)
static string Evalute(this string[] array, float val)
static string lang(this string s, string ref1, string ref2=null, string ref3=null, string ref4=null, string ref5=null)
static int Minimum(this int i)
static void LookAt2D(this Transform self, Transform target, Vector2 forward)
static void SetLocalScaleZ(this Transform transform, float z)
static void SetEulerAngles(this Transform transform, float x, float y, float z)
static float ClampAngle(this float angle)
static int Clamp(this int v, int min, int max, bool loop=false)
static string TrimNewLines(this string text)
static string TagColor(this string s, Color c)
static string[] SplitNewline(this string str)
static void CopyRect(this RectTransform r, RectTransform t)
static Color Multiply(this Color c, float mtp, float add)
static TValue[] CopyValues< TKey, TValue >(this IDictionary< TKey, TValue > dict)
static void SetLocalPositionY(this Transform transform, float y)
static Vector3 PlusZ(this Vector3 v, float a)
static void SetPositionZ(this Transform transform, float z)
static Color SetAlpha(this Color c, float a)
static void SetLocalScaleY(this Transform transform, float y)
static TValue LastItem< TValue >(this IList< TValue > source)
static byte[] ToBytes(this BitArray bits)
static T ToField< T >(this string s, object o)
static void SetLocalScale(this Transform transform, float x, float y, float z)
static string AddArticle(this string s)
static TValue Remainder< TValue >(this IList< TValue > source, int divider)
static int ToInt2(this float a)
static List< T > GetList< T >(this IDictionary source)
static void AddLocalPositionY(this Transform transform, float y)
static void AddPositionZ(this Transform transform, float z)
static bool HasField< T >(this object o, string name)
static void AddEulerAnglesY(this Transform transform, float y)
static void LookAt2D(this Transform self, Vector3 target, Vector2 forward)
static LangSetting setting
static string Get(string id)
static string[] GetList(string id)
static string Parse(string idLang, string val1, string val2=null, string val3=null, string val4=null, string val5=null)
static int Range(int min, int max)
string Parse(string idLang, string val1, string val2=null, string val3=null, string val4=null)