mirror of
https://github.com/tuyoogame/YooAsset.git
synced 2026-05-14 19:40:47 +00:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cd0a6579b8 | ||
|
|
18c2e232cf | ||
|
|
ad680638ac | ||
|
|
0764061d8f | ||
|
|
d448026250 | ||
|
|
34f553b9e3 | ||
|
|
25d1e32ce9 |
@@ -2,6 +2,17 @@
|
||||
|
||||
All notable changes to this package will be documented in this file.
|
||||
|
||||
## [1.4.14] - 2023-05-26
|
||||
|
||||
### Fixed
|
||||
|
||||
- 修复了收集器对着色器未过滤的问题。
|
||||
- 修复了内置着色器Tag特殊情况下未正确传染给依赖资源包的问题。
|
||||
|
||||
### Changed
|
||||
|
||||
- Unity2021版本及以上推荐使用可编程构建管线(SBP)
|
||||
|
||||
## [1.4.13] - 2023-05-12
|
||||
|
||||
### Changed
|
||||
|
||||
@@ -205,6 +205,7 @@ namespace YooAsset.Editor
|
||||
throw new Exception("没有发现着色器资源包!");
|
||||
|
||||
// 检测依赖交集并更新依赖ID
|
||||
HashSet<string> tagTemps = new HashSet<string>();
|
||||
foreach (var packageAsset in manifest.AssetList)
|
||||
{
|
||||
List<string> dependBundles = GetPackageAssetAllDependBundles(manifest, packageAsset);
|
||||
@@ -215,8 +216,23 @@ namespace YooAsset.Editor
|
||||
if (newDependIDs.Contains(shaderBundleId) == false)
|
||||
newDependIDs.Add(shaderBundleId);
|
||||
packageAsset.DependIDs = newDependIDs.ToArray();
|
||||
foreach (var tag in packageAsset.AssetTags)
|
||||
{
|
||||
if (tagTemps.Contains(tag) == false)
|
||||
tagTemps.Add(tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 更新资源包标签
|
||||
var packageBundle = manifest.BundleList[shaderBundleId];
|
||||
List<string> newTags = new List<string>(packageBundle.Tags);
|
||||
foreach (var tag in tagTemps)
|
||||
{
|
||||
if (newTags.Contains(tag) == false)
|
||||
newTags.Add(tag);
|
||||
}
|
||||
packageBundle.Tags = newTags.ToArray();
|
||||
}
|
||||
private List<string> GetPackageAssetAllDependBundles(PackageManifest manifest, PackageAsset packageAsset)
|
||||
{
|
||||
@@ -302,7 +318,7 @@ namespace YooAsset.Editor
|
||||
{
|
||||
if (packageBundle.IsRawFile)
|
||||
{
|
||||
_cachedBundleDepends.Add(packageBundle.BundleName, new string[] { } );
|
||||
_cachedBundleDepends.Add(packageBundle.BundleName, new string[] { });
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -321,7 +337,7 @@ namespace YooAsset.Editor
|
||||
}
|
||||
EditorTools.ClearProgressBar();
|
||||
}
|
||||
|
||||
|
||||
private int[] GetBundleRefrenceIDs(PackageManifest manifest, PackageBundle targetBundle)
|
||||
{
|
||||
List<string> referenceList = new List<string>();
|
||||
|
||||
@@ -24,6 +24,13 @@ namespace YooAsset.Editor
|
||||
|
||||
if (buildParameters.BuildMode != EBuildMode.SimulateBuild)
|
||||
{
|
||||
#if UNITY_2021_3_OR_NEWER
|
||||
if (buildParameters.BuildPipeline == EBuildPipeline.BuiltinBuildPipeline)
|
||||
{
|
||||
BuildLogger.Warning("推荐使用可编程构建管线(SBP)!");
|
||||
}
|
||||
#endif
|
||||
|
||||
// 检测当前是否正在构建资源包
|
||||
if (BuildPipeline.isBuildingPlayer)
|
||||
throw new Exception("当前正在构建资源包,请结束后再试");
|
||||
|
||||
@@ -290,10 +290,6 @@ namespace YooAsset.Editor
|
||||
}
|
||||
private bool IsCollectAsset(string assetPath)
|
||||
{
|
||||
Type assetType = AssetDatabase.GetMainAssetTypeAtPath(assetPath);
|
||||
if (assetType == typeof(UnityEngine.Shader) || assetType == typeof(UnityEngine.ShaderVariantCollection))
|
||||
return true;
|
||||
|
||||
// 根据规则设置过滤资源文件
|
||||
IFilterRule filterRuleInstance = AssetBundleCollectorSettingData.GetFilterRuleInstance(FilterRuleName);
|
||||
return filterRuleInstance.IsCollectAsset(new FilterRuleData(assetPath));
|
||||
|
||||
@@ -103,6 +103,7 @@ namespace YooAsset
|
||||
else
|
||||
{
|
||||
_steps = ESteps.LoadFile;
|
||||
return; //下载完毕等待一帧再去加载!
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -92,6 +92,7 @@ namespace YooAsset
|
||||
else
|
||||
{
|
||||
_steps = ESteps.LoadCacheFile;
|
||||
return; //下载完毕等待一帧再去加载!
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -47,20 +47,6 @@ public class FileStreamEncryption : IEncryptionServices
|
||||
return result;
|
||||
}
|
||||
|
||||
// LoadFromFileOffset
|
||||
if (fileInfo.BundleName.Contains("_gameres_uiimage"))
|
||||
{
|
||||
var fileData = File.ReadAllBytes(fileInfo.FilePath);
|
||||
int offset = 32;
|
||||
var temper = new byte[fileData.Length + offset];
|
||||
Buffer.BlockCopy(fileData, 0, temper, offset, fileData.Length);
|
||||
|
||||
EncryptResult result = new EncryptResult();
|
||||
result.LoadMethod = EBundleLoadMethod.LoadFromFileOffset;
|
||||
result.EncryptedData = temper;
|
||||
return result;
|
||||
}
|
||||
|
||||
// Normal
|
||||
{
|
||||
EncryptResult result = new EncryptResult();
|
||||
|
||||
@@ -74,7 +74,7 @@ internal class FsmInitialize : IStateNode
|
||||
}
|
||||
|
||||
yield return initializationOperation;
|
||||
if (package.InitializeStatus == EOperationStatus.Succeed)
|
||||
if (initializationOperation.Status == EOperationStatus.Succeed)
|
||||
{
|
||||
_machine.ChangeState<FsmUpdateVersion>();
|
||||
}
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4b1fa97e8bb8c5c46ad030b9554e1b5c
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7bfd05221983858429246096617dff1d
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b19a7385dee2d0141901167dbfda9300
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,57 +0,0 @@
|
||||
//-------------------------------------
|
||||
// 作者:Stark
|
||||
//-------------------------------------
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public sealed class StreamingAssetsHelper
|
||||
{
|
||||
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
|
||||
}
|
||||
@@ -1,6 +1,64 @@
|
||||
//-------------------------------------
|
||||
// 作者:Stark
|
||||
//-------------------------------------
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// StreamingAssets目录下资源查询帮助类
|
||||
/// </summary>
|
||||
public sealed class StreamingAssetsHelper
|
||||
{
|
||||
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>
|
||||
@@ -69,7 +127,7 @@ public boolean CheckAssetExist(String filePath)
|
||||
}
|
||||
catch(java.io.IOException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
//e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "com.tuyoogame.yooasset",
|
||||
"displayName": "YooAsset",
|
||||
"version": "1.4.13",
|
||||
"version": "1.4.14",
|
||||
"unity": "2019.4",
|
||||
"description": "unity3d resources management system.",
|
||||
"author": {
|
||||
|
||||
Reference in New Issue
Block a user