资源加载

方式一:使用全局变量,以拖动的方式赋值

public class Main : MonoBehaviour { public TextAsset indexJson; ...

方式二:新建Resources文件夹

把资源文件放在该文件夹下,例如index.json这个文件,加载的时候只需要写成index,不需要带着后缀名。 Resources文件夹可以位于Assets文件夹的任意位置。

var x = Resources.Load<TextAsset>("index"); Debug.Log($"resource .length={x.text.Length}");

方式三:网络加载资源

var t = await Util.GetRemoteTexture("https://forum.unity.com/data/avatars/m/628/628421.jpg?1441745369"); var obj = new GameObject(); obj.AddComponent<RawImage>(); var rawImage = obj.GetComponent<RawImage>(); rawImage.texture = t;

使用网络请求获取资源

public static async Task<Texture2D> GetRemoteTexture(string url) { using (UnityWebRequest req = UnityWebRequestTexture.GetTexture(url)) { req.certificateHandler = new BypassCertificate(); // begin request: var asyncOp = req.SendWebRequest(); // await until it's done: while (asyncOp.isDone == false) await Task.Delay(1000 / 30); //30 hertz // read results: if (req.result == UnityWebRequest.Result.ConnectionError || req.result == UnityWebRequest.Result.ProtocolError) { Debug.Log($"{req.error}, URL:{req.url}"); return null; } else { // return valid results: return DownloadHandlerTexture.GetContent(req); } } }

方式四:通过AssetDatabases加载资源

{ //使用AssetDatabase加载图片,图片的位置可以比较随意 var x = AssetDatabase.FindAssets("PICODeveloper"); Debug.Log($"assets:{string.Join(",", x)}"); if (x.Length > 0) { var assetId = x[0]; var filepath = AssetDatabase.GUIDToAssetPath(assetId); texture = AssetDatabase.LoadAssetAtPath<Texture>(filepath); } }