添加项目文件。
This commit is contained in:
156
Assets/HGF/Scripts/GameAPI.cs
Normal file
156
Assets/HGF/Scripts/GameAPI.cs
Normal file
@@ -0,0 +1,156 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Networking;
|
||||
|
||||
namespace Common.Game
|
||||
{
|
||||
/// <summary>
|
||||
/// 游戏内通用API
|
||||
/// </summary>
|
||||
public static class GameAPI
|
||||
{
|
||||
/// <summary>
|
||||
/// 返回可读可写路径
|
||||
/// PC端:streamingAssetsPath
|
||||
/// 移动端:Application.persistentDataPath
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static string GetWritePath ()
|
||||
{
|
||||
#if UNITY_EDITOR || UNITY_STANDALONE
|
||||
return Application.streamingAssetsPath;
|
||||
#elif UNITY_IOS || UNITY_ANDROID
|
||||
return Application.persistentDataPath;
|
||||
#endif
|
||||
}
|
||||
/// <summary>
|
||||
/// 接管Debug.Log(...)
|
||||
/// </summary>
|
||||
/// <param name="_Message">调试信息</param>
|
||||
/// <param name="_Type">1.debug 2.warn 3.error</param>
|
||||
public static void Print (object _Message, string _Type = "debug")
|
||||
{
|
||||
string currentTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
string res = $"[{currentTime}] {_Type} : {_Message}";
|
||||
switch (_Type)
|
||||
{
|
||||
case "debug":
|
||||
Debug.Log(res);
|
||||
return;
|
||||
case "warn":
|
||||
Debug.LogWarning(res);
|
||||
return;
|
||||
case "error":
|
||||
Debug.LogError(res);
|
||||
return;
|
||||
default:
|
||||
Debug.Log(res);
|
||||
break;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 暴力查找一个物体,找不到返回Null
|
||||
/// </summary>
|
||||
/// <param name="_Name"></param>
|
||||
/// <returns></returns>
|
||||
public static GameObject FindGameObject_Force (string _Name)
|
||||
{
|
||||
|
||||
GameObject[] all = Resources.FindObjectsOfTypeAll(typeof(GameObject)) as GameObject[];
|
||||
for (int i = 0; i < all.Length; i++)
|
||||
{
|
||||
var item = all[i];
|
||||
if (item.name == _Name) return item;
|
||||
}
|
||||
return null;
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// 生成SHA256值
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
public static string GenerateSha256 (string input)
|
||||
{
|
||||
using (SHA256 sha256Hash = SHA256.Create())
|
||||
{
|
||||
byte[] bytes = sha256Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
|
||||
|
||||
StringBuilder builder = new StringBuilder();
|
||||
for (int i = 0; i < bytes.Length; i++)
|
||||
{
|
||||
builder.Append(bytes[i].ToString("x2"));
|
||||
}
|
||||
|
||||
return builder.ToString().ToUpper();
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 通过UnityWebRequest获取本地StreamingAssets文件夹中的文件
|
||||
/// </summary>
|
||||
/// <param name="fileName">文件名称</param>
|
||||
/// <returns></returns>
|
||||
public static string UnityWebRequestFile (string fileName)
|
||||
{
|
||||
string url;
|
||||
#region 分平台判断 StreamingAssets 路径
|
||||
//如果在编译器或者单机中
|
||||
#if UNITY_EDITOR || UNITY_STANDALONE
|
||||
|
||||
url = "file://" + Application.dataPath + "/StreamingAssets/" + fileName;
|
||||
//否则如果在Iphone下
|
||||
#elif UNITY_IPHONE
|
||||
url = "file://" + Application.dataPath + "/Raw/"+ fileName;
|
||||
//否则如果在android下
|
||||
#elif UNITY_ANDROID
|
||||
url = "jar:file://" + Application.dataPath + "!/assets/"+ fileName;
|
||||
#endif
|
||||
#endregion
|
||||
UnityWebRequest request = UnityWebRequest.Get(url);
|
||||
request.SendWebRequest();//读取数据
|
||||
while (true)
|
||||
{
|
||||
if (request.downloadHandler.isDone)//是否读取完数据
|
||||
{
|
||||
return request.downloadHandler.text;
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 从外部指定文件中加载图片
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static Sprite LoadTextureByIO (string Path)
|
||||
{
|
||||
FileStream fs = new FileStream(Path, FileMode.Open, FileAccess.Read);
|
||||
fs.Seek(0, SeekOrigin.Begin);//游标的操作,可有可无
|
||||
byte[] bytes = new byte[fs.Length];//生命字节,用来存储读取到的图片字节
|
||||
try
|
||||
{
|
||||
fs.Read(bytes, 0, bytes.Length);//开始读取,这里最好用trycatch语句,防止读取失败报错
|
||||
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.Log(e);
|
||||
}
|
||||
fs.Close();//切记关闭
|
||||
|
||||
int width = 2048;//图片的宽(这里两个参数可以提到方法参数中)
|
||||
int height = 2048;//图片的高(这里说个题外话,pico相关的开发,这里不能大于4k×4k不然会显示异常,当时开发pico的时候应为这个问题找了大半天原因,因为美术给的图是6000*3600,导致出现切几张图后就黑屏了。。。
|
||||
Texture2D texture = new Texture2D(width, height);
|
||||
if (texture.LoadImage(bytes))
|
||||
{
|
||||
return Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));//将生成的texture2d返回,到这里就得到了外部的图片,可以使用了
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user