123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- //-------------------------------------
- // 作者:Stark
- //-------------------------------------
- using System.Collections.Generic;
- using UnityEngine;
- using YooAsset;
- /*
- /// <summary>
- /// 资源文件查询服务类
- /// </summary>
- public class GameQueryServices2 : IQueryServices
- {
- public DeliveryFileInfo GetDeliveryFileInfo(string packageName, string fileName)
- {
- throw new System.NotImplementedException();
- }
- public bool QueryDeliveryFiles(string packageName, string fileName)
- {
- return false;
- }
- public bool QueryStreamingAssets(string packageName, string fileName)
- {
- return StreamingAssetsHelper2.FileExists($"{StreamingAssetsDefine.RootFolderName}/{packageName}/{fileName}");
- }
- }
- /// <summary>
- /// StreamingAssets目录下资源查询帮助类
- /// </summary>
- public sealed class StreamingAssetsHelper2
- {
- private static readonly Dictionary<string, bool> _cacheData = new Dictionary<string, bool>(1000);
- #if UNITY_ANDROID && !UNITY_EDITOR
- private static AndroidJavaClass _unityPlayerClass;
- public static AndroidJavaClass UnityPlayerClass
- {
- get
- {
- if (_unityPlayerClass == null)
- _unityPlayerClass = new UnityEngine.AndroidJavaClass("com.unity3d.player.UnityPlayer");
- return _unityPlayerClass;
- }
- }
- private static AndroidJavaObject _currentActivity;
- public static AndroidJavaObject CurrentActivity
- {
- get
- {
- if (_currentActivity == null)
- _currentActivity = UnityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");
- return _currentActivity;
- }
- }
- /// <summary>
- /// 利用安卓原生接口查询内置文件是否存在
- /// </summary>
- public static bool FileExists(string filePath)
- {
- if (_cacheData.TryGetValue(filePath, out bool result) == false)
- {
- result = CurrentActivity.Call<bool>("CheckAssetExist", filePath);
- _cacheData.Add(filePath, result);
- }
- return result;
- }
- #else
- public static bool FileExists(string filePath)
- {
- if (_cacheData.TryGetValue(filePath, out bool result) == false)
- {
- result = System.IO.File.Exists(System.IO.Path.Combine(Application.streamingAssetsPath, filePath));
- _cacheData.Add(filePath, result);
- }
- return result;
- }
- #endif
- }
- #if UNITY_ANDROID && UNITY_EDITOR
- /// <summary>
- /// 为Github对开发者的友好,采用自动补充UnityPlayerActivity.java文件的通用姿势满足各个开发者
- /// </summary>
- internal class AndroidPost : UnityEditor.Android.IPostGenerateGradleAndroidProject
- {
- public int callbackOrder => 99;
- public void OnPostGenerateGradleAndroidProject(string path)
- {
- path = path.Replace("\\", "/");
- string untityActivityFilePath = $"{path}/src/main/java/com/unity3d/player/UnityPlayerActivity.java";
- var readContent = System.IO.File.ReadAllLines(untityActivityFilePath);
- string postContent =
- " //auto-gen-function \n" +
- " public boolean CheckAssetExist(String filePath) \n" +
- " { \n" +
- " android.content.res.AssetManager assetManager = getAssets(); \n" +
- " try \n" +
- " { \n" +
- " java.io.InputStream inputStream = assetManager.open(filePath); \n" +
- " if (null != inputStream) \n" +
- " { \n" +
- " inputStream.close(); \n" +
- " return true; \n" +
- " } \n" +
- " } \n" +
- " catch(java.io.IOException e) \n" +
- " { \n" +
- " } \n" +
- " return false; \n" +
- " } \n" +
- "}";
- if (CheckFunctionExist(readContent) == false)
- readContent[readContent.Length - 1] = postContent;
- System.IO.File.WriteAllLines(untityActivityFilePath, readContent);
- }
- private bool CheckFunctionExist(string[] contents)
- {
- for (int i = 0; i < contents.Length; i++)
- {
- if (contents[i].Contains("CheckAssetExist"))
- {
- return true;
- }
- }
- return false;
- }
- }
- #endif
- */
- /*
- // 以下代码为安卓原生代码,不需要解除注释
- //auto-gen-function
- public boolean CheckAssetExist(String filePath)
- {
- android.content.res.AssetManager assetManager = getAssets();
- try
- {
- java.io.InputStream inputStream = assetManager.open(filePath);
- if(null != inputStream)
- {
- inputStream.close();
- return true;
- }
- }
- catch(java.io.IOException e)
- {
- //e.printStackTrace();
- }
- return false;
- }
- */
|