2025-05-18 01:04:31 +08:00

261 lines
5.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ***********************************************************************
// Company :
// Author : Kimch
// Created :
//
// Last Modified By : Kimch
// Last Modified On : 2016-03-30
// ***********************************************************************
namespace G
{
using System.Collections;
using UnityEngine;
/// <summary>
/// 转换方法集
/// </summary>
public static class KUtils
{
#region CONST
#endregion
#region ENUM
#endregion
#region MODEL
#endregion
#region FIELD
#endregion
#region PROPERTY
#endregion
#region METHOD
#endregion
#region STATIC
private static string _PersistentDataPath;
public static string PersistentDataPath
{
get
{
if (_PersistentDataPath.IsNullOrEmpty())
{
_PersistentDataPath = Application.persistentDataPath;
if (_PersistentDataPath.IsNullOrEmpty())
{
//_PersistentDataPath = KPlatform.InternalGetPersistentDataPath();
}
}
return _PersistentDataPath;
}
}
/// <summary>
/// add component if not have one
/// </summary>
/// <typeparam name="T">Component</typeparam>
/// <param name="go">target</param>
/// <param name="checkChild">是否从子物体中获取T</param>
public static T AddComponentIfNotHave<T>(GameObject go, bool checkChild = false) where T : UnityEngine.Component
{
T t = default(T);
if (checkChild)
{
t = go.GetComponentInChildren<T>();
}
else
{
t = go.GetComponent<T>();
}
if (t == null)
{
t = (T)go.AddComponent(typeof(T));
}
return t;
}
/// <summary>
/// add an element to array by index
/// </summary>
/// <param name="index">默认加到数组尾部</param>
public static void AddElementAt<T>(ref T[] arr, T t, int index = -1) where T : new()
{
if (arr == null)
{
arr = new T[] { };
}
T[] temp = new T[arr.Length + 1];
if (index == -1)
{
index = arr.Length;
}
if (index > temp.Length)
{
//KLog.LogWarning("insert index out of range");
return;
}
if (t == null)
{
t = new T();
}
if (temp.Length > 1)
{
for (int i = 0; i < temp.Length; i++)
{
if (i < index)
{
temp[i] = arr[i];
}
else if (i == index)
{
temp[index] = t;
}
else
{
temp[i] = arr[i - 1];
}
}
}
arr = temp;
}
/// <summary>
/// 检查特定DateTime和当前是不是差距特定天数
/// </summary>
/// <param name="checkDate"></param>
/// <param name="day"></param>
/// <param name="afterNow">如果是true则认为checkDate在当前之后</param>
/// <returns></returns>
public static bool CheckDate(System.DateTime checkDate, int day, bool afterNow = false)
{
System.DateTime now = System.DateTime.Now;
double days;
if (afterNow)
{
days = (checkDate - now).TotalDays;
}
else
{
days = (now - checkDate).TotalDays;
}
if (days >= day)
{
return true;
}
return false;
}
/// <summary>
/// 检查特定DateTime和当前是不是差距特定秒数
/// </summary>
/// <param name="checkMinute"></param>
/// <param name="second"></param>
/// <param name="afterNow">如果是true则认为checkDate在当前之后</param>
/// <returns></returns>
public static bool CheckSecond(System.DateTime checkMinute, int second, bool afterNow = false)
{
System.DateTime now = System.DateTime.Now;
double seconds;
if (afterNow)
{
seconds = (checkMinute - now).TotalSeconds;
}
else
{
seconds = (now - checkMinute).TotalSeconds;
}
if (seconds >= second)
{
return true;
}
return false;
}
/// <summary>
/// 为空或者是""
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static bool IsNullOrEmpty(this string str)
{
return string.IsNullOrEmpty(str);
}
/// <summary>
/// 为空或者全是占位符
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static bool IsNullOrWhiteSpace(this string str)
{
return string.IsNullOrEmpty(str) || str.Trim().Length == 0;
}
/// <summary>
/// string转boolean
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static bool ToBoolean(this string value)
{
bool result;
bool.TryParse(value, out result);
return result;
}
/// <summary>
/// string转float
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static float ToFloat(this string value)
{
float result;
float.TryParse(value, out result);
return result;
}
/// <summary>
/// string转int
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static int ToInt(this string value)
{
int result;
int.TryParse(value, out result);
return result;
}
/// <summary>Generates the unique identifier.</summary>
/// <returns></returns>
public static string GenerateGUID()
{
return System.Guid.NewGuid().ToString();
}
/// <summary>Generates the hash.</summary>
/// <param name="value">The value.</param>
/// <returns></returns>
public static uint GenerateHash(string value)
{
uint b = 378551;
uint a = 63689;
uint hash = 0;
foreach (var str in value)
{
hash = hash * a + str;
a *= b;
}
return hash;
}
#endregion
}
}