薛之猫大王
17 hours ago da45ccae4c4b03fa50308b442a04ccfd3de160e0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
//
// GameApp.cs
// Create:
//      2019-10-29
// Description:
//      资源服务 接口
//      android平台
 
//      路径属性    路径
//      Application.dataPath    /data/app/xxx.xxx.xxx.apk
//      Application.streamingAssetsPath jar:file:///data/app/xxx.xxx.xxx.apk/!/assets
//      Application.persistentDataPath  /data/data/xxx.xxx.xxx/files
//      Application.temporaryCachePath  /data/data/xxx.xxx.xxx/cache
 
//      ios平台
 
//      路径属性    路径
//      Application.dataPath    Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data
//      Application.streamingAssetsPath Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data/Raw
//      Application.persistentDataPath Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents
//      Application.temporaryCachePath Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Library/Caches
// Author:
//      薛林强 <545626463@qq.com>
//
// Copyright (c) 2026 虚幻骑士科技
 
using System;
using UnityEngine;
 
namespace Skyunion
{
   // 资源包括场景需要使用小写。尤其是场景,如果用大写后续会有问题(如果你传入读取场景是小写,实际是大写,会导致场景无法加载,目测是Unity的Bug)。
    public interface IAssetService : IModule
    {
        // 此接口路径需要完整路径
        byte[] LoadFile(string path, bool readHotfix = true);
        // 此接口路径需要完整路径
        void LoadFileAsync(string path, Action<byte[]> completed);
        IAsset LoadAssetAsync<T>(string assetName, Action<IAsset> completed) where T:UnityEngine.Object;
        IAsset LoadAssetAsync<T>(string assetName, Action<IAsset> completed, UnityEngine.Object autoDestroyOwner) where T : UnityEngine.Object;
        IAsset LoadSceneAssetAsync(string assetName, bool addictive, Action<IAsset> completed);
        void Instantiate(string assetName, Action<GameObject> completed);
        void InstantiateNextFrame(string assetName, Action<GameObject> completed);
        void InstantiateOnePerFrame(string assetName, Action<GameObject> completed);
        void InstantiateSlowly(string assetName, Action<GameObject> completed);
        void Destroy(GameObject gameObject);
        void Destroy(GameObject gameObject, float fadeTime);
        GameObject Instantiate(GameObject gameObject);
        void SetOBBPath(string obbPath);
        void UnloadUnusedAssets();
    }
}