unity 的一些方便使用的方法

两个数组的比较是否相同
int[] a,int[]b
Enumerable.SequenceEqual(a,b)

数组转List : List list = new List(arr);
list转数组:int[] arr = list.ToArray();
将整数num转为16位二进制数组:Convert.ToString(num, 2).PadLeft(16,‘0’);
将字符串进行反向排列:string reverseStr = new string(str.Reverse().ToArray());

string.TrimStrart()// 删除字符串头部的空格
string.TrimEnd()//删除字符串尾部的空格
string.Trim()//删除字符串头部和尾部的空格

多种字符来分割字符串
string str=“我#是%字,符_串”
char[]splits={‘#’,‘%’,‘,’,‘_’};
string[] splitStrs=str.Split(splits);
for(int i=0;i<splitStrs.Length,i++)
{
Debug.Log(splitStrs[i]);
}

字符串截取
str.Substring(2,3);从索引2开始截取3个字符

//获取当前时间戳
long unixTime = ConvertDateTimep(DateTime.Now);
Debug.Log(unixTime);
//将时间戳转换为DateTime
Debug.Log(GetTime(unixTime.ToString()).ToString());

    Debug.Log(GetTime(unixTime.ToString()).Year);
    Debug.Log(GetTime(unixTime.ToString()).Month);
    Debug.Log(GetTime(unixTime.ToString()).Day);
    Debug.Log(GetTime(unixTime.ToString()).Hour);
    Debug.Log(GetTime(unixTime.ToString()).Minute);
    Debug.Log(GetTime(unixTime.ToString()).Second);

///
/// 获取时间戳(精确到秒)
/// TimeTool.ConvertDateTimep(DateTime.Now)
///
/// 时间
public static long ConvertDateTimep(DateTime time)
{
return ((time.ToUniversalTime().Ticks - 621355968000000000) / 10000000);
//等价于:
//return ((time.ToUniversalTime().Ticks - new DateTime(1970, 1, 1, 0, 0, 0, 0).Ticks) / 10000000) * 1000;
}
///
/// 获得时间戳
///
///
private long GetTime()
{
//精确到毫秒
return new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
}
///
/// 时间戳转为C#格式时间
/// TimeTool.GetTime(TimeTool.ConvertDateTiemp(DateTime.Now).ToString())
///
/// 时间戳
///
public static DateTime GetTime(string timeStamp)
{
if (timeStamp.Length > 10)
{
timeStamp = timeStamp.Substring(0, 10);
}
DateTime dateTimeStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
long lTime = long.Parse(timeStamp + “0000000”);
TimeSpan toNow = new TimeSpan(lTime);
return dateTimeStart.Add(toNow);
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.A))
{
//获取当前时间,并打印当前时间与开始时间相差秒数(以秒为单位)
DateTime curtimer = DateTime.Now;
Debug.Log(curtimer);
int timer = GetSubSeconds(startTime, curtimer);
Debug.Log(timer);
}
}

/// <summary>
/// 获取间隔秒数
/// </summary>
/// <param name="startTimer"></param>
/// <param name="endTimer"></param>
/// <returns></returns>
public int GetSubSeconds(DateTime startTimer, DateTime endTimer)
{
    TimeSpan startSpan = new TimeSpan(startTimer.Ticks);

    TimeSpan nowSpan = new TimeSpan(endTimer.Ticks);

    TimeSpan subTimer = nowSpan.Subtract(startSpan).Duration();

    //返回间隔秒数(不算差的分钟和小时等,仅返回秒与秒之间的差)
    //return subTimer.Seconds;

    //返回相差时长(算上分、时的差值,返回相差的总秒数)
    return (int)subTimer.TotalSeconds;
}

/// <summary>
/// 获取两个时间的相差多少分钟
/// </summary>
/// <param name="startTimer"></param>
/// <param name="endTimer"></param>
/// <returns></returns>
public int GetSubMinutes(DateTime startTimer, DateTime endTimer)
{
    TimeSpan startSpan = new TimeSpan(startTimer.Ticks);

    TimeSpan nowSpan = new TimeSpan(endTimer.Ticks);

    TimeSpan subTimer = nowSpan.Subtract(startSpan).Duration();

    //返回相差时长(仅返回相差的分钟数)
    //return subTimer.Minutes;
    //返回相差时长(仅返回相差的总分钟数)
    return (int)subTimer.TotalMinutes;
}


/// <summary>
/// 获取两个时间的相差多少小时
/// </summary>
/// <param name="startTimer"></param>
/// <param name="endTimer"></param>
/// <returns></returns>
public int GetSubHours(DateTime startTimer, DateTime endTimer)
{
    TimeSpan startSpan = new TimeSpan(startTimer.Ticks);

    TimeSpan nowSpan = new TimeSpan(endTimer.Ticks);

    TimeSpan subTimer = nowSpan.Subtract(startSpan).Duration();

    //返回相差时长(仅返回相差的小时)
    //return subTimer.Hours;
    //返回相差时长(返回相差的总小时数)
    return (int)subTimer.TotalHours;
}

/// <summary>
/// 获取两个时间的相差多少天
/// </summary>
/// <param name="startTimer"></param>
/// <param name="endTimer"></param>
/// <returns></returns>
public int GetSubDays(DateTime startTimer, DateTime endTimer)
{
    TimeSpan startSpan = new TimeSpan(startTimer.Ticks);

    TimeSpan nowSpan = new TimeSpan(endTimer.Ticks);

    TimeSpan subTimer = nowSpan.Subtract(startSpan).Duration();

    //返回相差时长(仅返回相差的天数)
    //return subTimer.Days;
    //返回相差时长(返回相差的总天数)
    return (int)subTimer.TotalDays;
}

单例的一种写法
public class SingleTon:MonoBehaviour where T:MonoBehaviour,new()
{
private static T instance = null;

  private static readonly object locker = new object();

  public static T Instance
  {
      get
     {
         lock (locker)
         {
             if (instance == null)
                 instance = new T();
             return instance;
         }
     }
 } 

}

猜你喜欢

转载自blog.csdn.net/weixin_43780907/article/details/130616500
今日推荐