逼格的一些小功能

日常开发中,实用的一些小功能,比如各进制转换,计算内存地址什么的。

分为C#部分和Unity部分,C#部分,只是存C#代码即可运行,Unity部分,需要用的Unity相关的api

C#部分

    /// <summary>
    /// 获取引用类型的内存地址方法
    /// </summary>
    /// <param name="o"></param>
    /// <returns></returns>
    public static string GetMemory(object o) // 获取引用类型的内存地址方法
    {
        GCHandle h = GCHandle.Alloc(o, GCHandleType.Pinned);
        IntPtr addr = h.AddrOfPinnedObject();
        return "0x" + addr.ToString("X");
    }
    /// <summary>
    /// 进制转换  
    /// 除了十进制转换成其他进制,或其他进制转换成十进制能直接转
    /// 当X进制转换成Y进制时,都要先将X进制转换成十进制再转换成Y进制
    /// 注意:
    /// 转换值 被要求在被转换进制内(转换值的进制中,单个位的值不能出现大于进制的值),例如: 9不能            以8进制转换为其他进制,因为8进制中不能出现9;同样2进制中,值不能出现≥2的值
    /// 71可以以8进制转换位其他进制,而81则不行,因为≥8的不能出现在8进制中
    /// 不符合进制要求 抛错:FormatException: Could not find any recognizable digits.
    /// 
    /// </summary>
    /// <param name="srcNum"> 转换值 </param>
    /// <param name="srcjz"> 转换值的进制 </param>
    /// <param name="tarjz"> 要转换的目标进制 </param>
    /// 示例 ConvertTojz("A234B124",16,10) 把十六进制的A234B124 转换成10进制
    /// <returns></returns>
    public static string ConvertTojz(string srcNum,int srcjz,int tarjz)
    {
        return Convert.ToString(Convert.ToInt32(srcNum,srcjz),tarjz);
    }

Unity 部分

    /// <summary>
    /// 游戏对象下的子物体激活的没激活的都会被拿到,包括游戏对象本身
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="root"></param>
    /// <param name="includeInactive"> 是否没激活的也查找</param>
    /// <returns></returns>
    public static T[] GetComponentsInRealChild<T>(this Transform root,bool includeInactive = false)
    {
        List<T> list = new List<T>();
        list.AddRange(root.GetComponentsInChildren<T>(includeInactive));
        list.RemoveAt(0);
        return list.ToArray();
    }
    /// <summary>
    /// 获取根目录
    /// </summary>
    /// <param name="tr"></param>
    /// <returns></returns>
    public static string GetRootPath(Transform tr)
    {
        string name = tr.name;
        string path = string.Empty;

        while (tr.parent != null)
        {
            path = tr.parent.name + "/" + path;

            tr = tr.parent;
        }

        if (string.IsNullOrEmpty(path))
        {
            path = name;
        }
        else
        {
            path = path + name;
        }

        return path;
    }
    /// <summary>
    /// 动态创建一个 指定名称的gameobjet 到根目录
    /// </summary>
    /// <param name="name"></param>
    /// <returns></returns>
    public static GameObject CreatEmptyGO(string name)
    {
        GameObject parent = new GameObject();
        parent.name = name;
        parent.transform.localPosition = Vector3.zero;
        parent.transform.localScale = Vector3.one;
        parent.transform.localRotation = Quaternion.Euler(Vector3.zero);

        return parent;
    }
    /// <summary>
    /// 删除指定Trans下的所有对象
    /// </summary>
    /// <param name="atransf"></param>
    public static void RemoveAll(Transform atransf)
    {
        Transform transform;
        for (int i = 0; i < atransf.childCount; i++)
        {
            transform = atransf.GetChild(i);
            GameObject.Destroy(transform.gameObject);
        }
    }

猜你喜欢

转载自blog.csdn.net/u013774978/article/details/132426512