unity的FileHelper

using System.IO;
using UnityEngine;


public class FileHelper
{

#if UNITY_IPHONE || UNITY_ANDROID

    #if UNITY_EDITOR
        static string localPath = Application.dataPath+"/../../../../trunk/config/";
    #else
        static string localPath = Application.persistentDataPath;
    #endif
    
#elif UNITY_EDITOR
	// static string localPath = Application.dataPath+"/CustomTemp/";
    static string localPath = Application.dataPath+"/../../../../trunk/config/";
#elif UNITY_STANDALONE_WIN || UNITY_STANDALONE_MAC
    static string localPath = Application.dataPath+"/../../../../trunk/config/";
#endif

    static FileHelper()
    {
        if(!Directory.Exists(localPath))
        { 
            Directory.CreateDirectory(localPath);
        }
    }
    
    /// <summary>
    /// 获取文件夹下面的所有文件
    /// </summary>
    public static FileInfo[] GetFileInfosFromDirectory(string relativePath)
    {
        string absPath = Path.Combine(localPath,relativePath);
        if(!Directory.Exists(absPath))
        { 
            Directory.CreateDirectory(absPath);
        } 
        
        DirectoryInfo info = new DirectoryInfo(absPath);
        return info.GetFiles();
    }

    public static void WriteToFile(string name, string content)
    {
        string filePath = Path.Combine(localPath,name);
        Debug.LogFormat("filePath:{0}",filePath);
        FileInfo file = new FileInfo(filePath);
        using(StreamWriter sw = file.CreateText())
        {
            //写入信息
            sw.Write(content);
        }
    }

    
    public static void WriteToFile(string name, string content,string strPath)
    {
        string filePath = Path.Combine(strPath, name);
        Debug.LogFormat("filePath:{0}", filePath);
        FileInfo file = new FileInfo(filePath);
        using (StreamWriter sw = file.CreateText())
        {
            //写入信息
            sw.Write(content);
            sw.Flush();
            sw.Close();
        }
    }
    
    
    public static string ReadFromFile(string name)
    {
        string filePath = Path.Combine(localPath,name);
        FileInfo file = new FileInfo(filePath);
        string content = "";
        if (file.Exists)
        {
            using(StreamReader sr = file.OpenText())
            {
                content = sr.ReadToEnd();
            }
        }
        
        return content;
    }

    public static string ReadFromFile(string name, string strPath)
    {
        string filePath = Path.Combine(strPath, name);
        FileInfo file = new FileInfo(filePath);
        string content = "";
        if (file.Exists)
        {
            using (StreamReader sr = file.OpenText())
            {
                content = sr.ReadToEnd();
            }
        }

        return content;
    }
    
    public static void DeleteFile(string name)
    {
        string filePath = Path.Combine(localPath,name);
        FileInfo file = new FileInfo(filePath);
        if (file.Exists)
        {
            file.Delete();
            Debug.LogFormat("删除文件:{0}",file.Name);
        }
    }
    
}



using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;

public class Test : MonoBehaviour
{


    /// <summary>
    /// 根据指定的资源类型,查找游戏资源
    /// </summary>
    /// <returns>返回资源对象</returns>
    /// <param name="name">资源名称</param>
    public static T findRes<T>(string name) where T : Object
    {
        T[] objs = Resources.FindObjectsOfTypeAll<T>();
        if (objs != null && objs.Length > 0)
        {
            foreach (Object obj in objs)
            {
                if (obj.name == name)
                    return obj as T;
            }
        }
        objs = AssetBundle.FindObjectsOfType<T>();
        if (objs != null && objs.Length > 0)
        {
            foreach (Object obj in objs)
            {
                if (obj.name == name)
                    return obj as T;
            }
        }
        return default(T);
    }

    /// <summary>
    /// 获取文件扩展名
    /// </summary>
    /// <param name="file">文件名称(可以带路径).</param>
    public static string getFileExt(string file)
    {
        if (file == null || file.Length == 0)
            return "";
        int i = file.LastIndexOf('.');
        if (i < 0) return "";
        return file.Substring(i + 1);
    }

    /// <summary>
    /// 获取文件名称(包含扩展名)
    /// </summary>
    /// <param name="file">文件名称或完整路径</param>
    public static string getFileName(string file)
    {
        return getFileName(file, true);
    }

    /// <summary>
    /// 获取文件名称
    /// </summary>
    /// <param name="file">文件名称或完整路径</param>
    /// <param name="isHaveExt">是否包含有文件扩展名</param>
    public static string getFileName(string file, bool isHaveExt)
    {
        if (file == null || file.Length == 0)
            return "";
        int i = file.LastIndexOf('/');
        if (i < 0)
        {
            if (!isHaveExt)
            {
                int j = file.LastIndexOf('.');
                if (j >= 0)
                    return file.Substring(0, j);
            }
            return file;
        }
        else
        {
            if (isHaveExt)
                return file.Substring(i + 1);
            else
            {
                int j = file.LastIndexOf('.');
                if (j > i)
                    return file.Substring(i + 1, j - i - 1);
                else
                    return file.Substring(i + 1);
            }
        }
    }

    /// <summary>
    /// 删除文件的扩展名
    /// </summary>
    public static string removeFileExt(string file)
    {
        if (file == null || file.Length == 0)
            return "";
        int i = file.LastIndexOf('.');
        if (i < 0)
            return file;
        return file.Substring(0, i);
    }

    /// <summary>
    /// 获取文件路径
    /// </summary>
    /// <param name="file">文件完整路径</param>
    public static string getFilePath(string file)
    {
        if (file == null || file.Length == 0)
            return "";
        return Path.GetDirectoryName(file);
    }

    /// <summary>
    /// 创建文件夹(如果文件夹已经存在,则不再创建)
    /// </summary>
    public static bool createFolder(string path)
    {
        if (path == null || path.Length == 0 || Directory.Exists(path))
            return false;
        Directory.CreateDirectory(path);
        return true;
    }

    /// <summary>
    /// 检测文件夹是否存在
    /// </summary>
    public static bool existsPath(string path)
    {
        if (path == null || path.Length == 0)
            return false;
        else
            return Directory.Exists(path);
    }

    /// <summary>
    /// 检测文件是否存在
    /// </summary>
    public static bool existsFile(string file)
    {
        if (file == null || file.Length == 0)
            return false;
        else
            return File.Exists(file);
    }

    /// <summary>
    /// 删除文件
    /// </summary>
    public static bool deleteFile(string file)
    {
        if (!existsFile(file))
            return true;
        try
        {
            File.Delete(file);
            return true;
        }
        catch (System.Exception e)
        {
            Debug.LogError(e.Message);
            return false;
        }
    }

    /// <summary>
    /// 删除文件夹
    /// <param name="recursive">是否删除所有子文件夹和文件</param>
    /// </summary>
    public static bool deleteFolder(string path, bool recursive)
    {
        if (path == null || path.Length == 0)
            return true;
        try
        {
            DirectoryInfo dir = new DirectoryInfo(path);
            dir.Delete(recursive);
            return true;
        }
        catch (System.Exception e)
        {
            Debug.LogError(e.Message);
            return false;
        }
    }

    /// <summary>
    /// 返回URL形式的streamingAssets地址(自动兼容平台)
    /// </summary>
    public static string streamingAssetsURL
    {
        get
        {
#if UNITY_ANDROID && !UNITY_EDITOR
				return "jar:file://" + Application.dataPath + "!/assets/";
#elif UNITY_IPHONE
				return Application.dataPath + "/Raw/";
#elif UNITY_STANDALONE_WIN || UNITY_EDITOR
            return "file://" + Application.dataPath + "/StreamingAssets/";
#endif
        }
    }

    /// <summary>
    /// 获取当前透视摄像机的视口区域
    /// </summary>
    public static Vector3[] getCameraCorners(float distance)
    {
        Camera theCamera = Camera.main;
        Transform tx = theCamera.transform;
        Vector3[] corners = new Vector3[4];

        float halfFOV = (theCamera.fieldOfView * 0.5f) * Mathf.Deg2Rad;
        float aspect = theCamera.aspect;

        float height = distance * Mathf.Tan(halfFOV);
        float width = height * aspect;

        // UpperLeft
        corners[0] = tx.position - (tx.right * width);
        corners[0] += tx.up * height;
        corners[0] += tx.forward * distance;

        // UpperRight
        corners[1] = tx.position + (tx.right * width);
        corners[1] += tx.up * height;
        corners[1] += tx.forward * distance;

        // LowerLeft
        corners[2] = tx.position - (tx.right * width);
        corners[2] -= tx.up * height;
        corners[2] += tx.forward * distance;

        // LowerRight
        corners[3] = tx.position + (tx.right * width);
        corners[3] -= tx.up * height;
        corners[3] += tx.forward * distance;

        return corners;
    }

    /// <summary>
    /// 获取使用正交相机时,主摄像机在地图上的移动区域。
    /// 使用正交相机时,可以通过旋转摄像机X轴来显示地图,此时通过Y轴控制摄像机高度,X控制水平位置,Z轴控制上下位置。
    /// </summary>
    /// <returns>返回摄像机移动区域.</returns>
    /// <param name="RotationX">摄像机旋转角度(X轴)</param>
    /// <param name="CameraSize">相机大小</param>
    /// <param name="CamersY">摄像机高度(Y轴坐标)</param>
    /// <param name="MapW">地图宽度</param>
    /// <param name="MapH">地图高度</param>
    public static Rect OrthographicCameraEdge(float RotationX, float CameraSize, float CamersY, float MapW, float MapH)
    {
        float CXSize = CameraSize * 2 * ((float)Screen.width / (float)Screen.height);
        float CYSize = CameraSize * 2 / Mathf.Cos(RotationX * Mathf.Deg2Rad);
        return new Rect(
            CXSize / 2.0f,
            CYSize / 2.0f - CamersY,
            MapW - CXSize,
            MapH - CYSize); ;
    }

    /// <summary>
    /// 显示一个提示信息 Toast
    /// </summary>
    public static void Hint(string msg)
    {
#if UNITY_ANDROID || UNITY_ANDROID_API
			AndroidCommon.Hint(msg);
#else
#endif
    }
}







发布了121 篇原创文章 · 获赞 48 · 访问量 32万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览