Compare commits

...

38 Commits
1.3.4 ... 1.3.7

Author SHA1 Message Date
hevinci
140bcb037f Update CHANGELOG.md 2022-11-26 18:17:22 +08:00
hevinci
2a4384e093 Update package.json 2022-11-26 18:17:20 +08:00
hevinci
5aafed85ed Update CHANGELOG.md 2022-11-26 18:11:34 +08:00
hevinci
6ad4b91c60 Update package.json 2022-11-26 18:11:20 +08:00
hevinci
cd62686316 update editor code
非原生文件收集器自动移除Unity无法识别的文件。
2022-11-26 17:54:42 +08:00
hevinci
dcd606e573 update samples 2022-11-26 17:41:34 +08:00
hevinci
f6f326119c update samples 2022-11-26 17:39:52 +08:00
hevinci
f31e5e0d22 update runtime code 2022-11-26 17:39:35 +08:00
hevinci
abc12d2a1d Update runtime code
增加资源系统销毁方法。
2022-11-26 16:43:05 +08:00
hevinci
b7e2f084b1 Update editor code 2022-11-26 15:31:46 +08:00
hevinci
adf1776b1e Update runtime code
优化调试信息的加载状态显示为文本。
2022-11-26 15:31:35 +08:00
hevinci
fd1edcdedf Fix #45 2022-11-26 15:14:46 +08:00
hevinci
ebc25c401d update sample 2022-11-26 15:09:12 +08:00
hevinci
67574bf759 update samples 2022-11-26 11:29:53 +08:00
hevinci
e94923c3c6 Update AssetSystem 2022-11-26 11:29:39 +08:00
hevinci
5718d57b88 update sample 2022-11-25 21:40:54 +08:00
hevinci
82cff36194 Update samples 2022-11-23 16:46:25 +08:00
hevinci
3e4e2d5eb6 Update space shooter 2022-11-23 12:35:27 +08:00
hevinci
015f09d27b Update runtime code 2022-11-23 12:33:12 +08:00
hevinci
3fedc5b1b3 Update AssetBundleCollector
原生文件打包规则包含文件后缀名
2022-11-21 19:07:34 +08:00
hevinci
4776ab9bd8 Update document 2022-11-21 09:52:18 +08:00
hevinci
3bb01ef9a8 Update CHANGELOG.md 2022-11-19 18:34:43 +08:00
hevinci
0204f5f68f Update package.json 2022-11-19 18:34:39 +08:00
hevinci
217d88beaa Update basic sample 2022-11-19 18:34:31 +08:00
hevinci
77080b3934 Update basic sample 2022-11-19 17:54:41 +08:00
hevinci
83f6dc2f76 Update editor code 2022-11-19 17:54:18 +08:00
hevinci
29b3ca4e69 Update runtime code
重构原生文件加载流程。
2022-11-19 17:54:09 +08:00
hevinci
9394ff49fd Update basic sample 2022-11-18 21:35:42 +08:00
hevinci
49949ecda5 Update runtime code
优化资源包缓存文件清理方式。
2022-11-18 21:33:58 +08:00
hevinci
1dab0f2b19 Update patch system
下载器增加取消方法。
2022-11-18 16:45:56 +08:00
hevinci
1cf03bf049 Update basic sample 2022-11-18 10:21:48 +08:00
何冠峰
c00594738f Update asset system
支持场景文件跨资源包配置。
2022-11-16 16:25:43 +08:00
何冠峰
d5f601b0eb Update runtime code 2022-11-16 14:49:38 +08:00
何冠峰
304bff1f19 Fix #43
修复了打包规则按收集器路径来命名,bundle文件名称显示不正确。
2022-11-16 11:51:01 +08:00
hevinci
ce9e0cd88c Update README.md 2022-11-11 11:02:56 +08:00
hevinci
40903d9ad5 Update runtime code 2022-11-11 11:01:37 +08:00
hevinci
0fc97ad2f1 Update document 2022-11-11 11:01:25 +08:00
hevinci
2bb66ea583 Update README.md 2022-11-11 11:01:11 +08:00
645 changed files with 136566 additions and 15911 deletions

View File

@@ -2,6 +2,78 @@
All notable changes to this package will be documented in this file.
## [1.3.7] - 2022-11-26
全新的太空战机Demo !
### Fixed
- (#45)修复了package列表更新触发的异常。
### Added
- 新增了YooAssets.Destroy()资源系统销毁方法。
```C#
/// <summary>
/// 销毁资源系统
/// </summary>
public static void Destroy();
```
### Changed
- 优化了资源收集规则,原生文件打包名称现在已经包含文件后缀名。
- 优化了资源收集规则非原生文件收集器自动移除Unity无法识别的文件。
- 优化了调试信息窗口,列表元素的加载状态显示为文本。
## [1.3.5] - 2022-11-19
### Fixed
- 修复了同步接口加载加密文件失败的问题。
### Added
- 新增了方法AssetsPackage.ClearPackageUnusedCacheFilesAsync()
```c#
/// <summary>
/// 清理本地包裹未使用的缓存文件
/// </summary>
public ClearPackageUnusedCacheFilesOperation ClearPackageUnusedCacheFilesAsync()
```
- 新增了方法AssetsPackage.LoadRawFileAsync()
```c#
/// <summary>
/// 异步加载原生文件
/// </summary>
/// <param name="location">资源的定位地址</param>
public RawFileOperationHandle LoadRawFileAsync(string location)
```
- 新增了方法AssetsPackage.LoadRawFileSync()
```c#
/// <summary>
/// 同步加载原生文件
/// </summary>
/// <param name="location">资源的定位地址</param>
public RawFileOperationHandle LoadRawFileSync(string location)
```
### Changed
- 重命名AssetsPackage.UpdateStaticVersionAsync()为AssetsPackage.UpdatePackageVersionAsync();
- 重命名AssetsPackage.UpdateManifestAsync()为AssetsPackage.UpdatePackageManifestAsync();
### Removed
- 移除了方法YooAssets.ClearUnusedCacheFiles()
- 移除了方法AssetsPackage.GetRawFileAsync()
## [1.3.4] - 2022-11-04
### Fixed

View File

@@ -1,4 +1,5 @@
using UnityEditor;
using UnityEngine;
namespace YooAsset.Editor
{
@@ -9,6 +10,7 @@ namespace YooAsset.Editor
/// </summary>
public static string SimulateBuild(string packageName)
{
Debug.Log($"Begin to create simulate package : {packageName}");
string defaultOutputRoot = AssetBundleBuilderHelper.GetDefaultOutputRoot();
BuildParameters buildParameters = new BuildParameters();
buildParameters.OutputRoot = defaultOutputRoot;

View File

@@ -240,13 +240,15 @@ namespace YooAsset.Editor
return false;
// 忽略Unity无法识别的无效文件
/*
if (type == typeof(UnityEditor.DefaultAsset))
// 注意:只对非原生文件收集器处理
if(PackRuleName != nameof(PackRawFile))
{
UnityEngine.Debug.LogWarning($"Cannot pack default asset : {assetPath}");
return false;
if (type == typeof(UnityEditor.DefaultAsset))
{
UnityEngine.Debug.LogWarning($"Cannot pack default asset : {assetPath}");
return false;
}
}
*/
string fileExtension = System.IO.Path.GetExtension(assetPath);
if (IsIgnoreFile(fileExtension))

View File

@@ -7,9 +7,8 @@ namespace YooAsset.Editor
/// <summary>
/// 以文件路径作为资源包名
/// 注意:每个文件独自打资源包
/// 例如:收集器路径为 "Assets/UIPanel"
/// 例如:"Assets/UIPanel/Shop/Image/backgroud.png" --> "assets/uipanel/shop/image/backgroud.bundle"
/// 例如:"Assets/UIPanel/Shop/View/main.prefab" --> "assets/uipanel/shop/view/main.bundle"
/// 例如:"Assets/UIPanel/Shop/Image/backgroud.png" --> "assets_uipanel_shop_image_backgroud.bundle"
/// 例如:"Assets/UIPanel/Shop/View/main.prefab" --> "assets_uipanel_shop_view_main.bundle"
/// </summary>
public class PackSeparately : IPackRule
{
@@ -23,9 +22,8 @@ namespace YooAsset.Editor
/// <summary>
/// 以父类文件夹路径作为资源包名
/// 注意:文件夹下所有文件打进一个资源包
/// 例如:收集器路径为 "Assets/UIPanel"
/// 例如:"Assets/UIPanel/Shop/Image/backgroud.png" --> "assets/uipanel/shop/image.bundle"
/// 例如:"Assets/UIPanel/Shop/View/main.prefab" --> "assets/uipanel/shop/view.bundle"
/// 例如:"Assets/UIPanel/Shop/Image/backgroud.png" --> "assets_uipanel_shop_image.bundle"
/// 例如:"Assets/UIPanel/Shop/View/main.prefab" --> "assets_uipanel_shop_view.bundle"
/// </summary>
public class PackDirectory : IPackRule
{
@@ -42,8 +40,8 @@ namespace YooAsset.Editor
/// 以收集器路径下顶级文件夹为资源包名
/// 注意:文件夹下所有文件打进一个资源包
/// 例如:收集器路径为 "Assets/UIPanel"
/// 例如:"Assets/UIPanel/Shop/Image/backgroud.png" --> "assets/uipanel/shop.bundle"
/// 例如:"Assets/UIPanel/Shop/View/main.prefab" --> "assets/uipanel/shop.bundle"
/// 例如:"Assets/UIPanel/Shop/Image/backgroud.png" --> "assets_uipanel_shop.bundle"
/// 例如:"Assets/UIPanel/Shop/View/main.prefab" --> "assets_uipanel_shop.bundle"
/// </summary>
public class PackTopDirectory : IPackRule
{
@@ -74,8 +72,17 @@ namespace YooAsset.Editor
{
string IPackRule.GetBundleName(PackRuleData data)
{
string bundleName = StringUtility.RemoveExtension(data.CollectPath);
return EditorTools.GetRegularPath(bundleName).Replace('/', '_');
string collectPath = data.CollectPath;
if (AssetDatabase.IsValidFolder(collectPath))
{
string bundleName = collectPath;
return EditorTools.GetRegularPath(bundleName).Replace('/', '_');
}
else
{
string bundleName = StringUtility.RemoveExtension(collectPath);
return EditorTools.GetRegularPath(bundleName).Replace('/', '_');
}
}
}
@@ -113,8 +120,8 @@ namespace YooAsset.Editor
if (depends.Length != 1)
throw new Exception($"{nameof(PackRawFile)} is not support estension : {extension}");
string bundleName = StringUtility.RemoveExtension(data.AssetPath);
return EditorTools.GetRegularPath(bundleName).Replace('/', '_');
string bundleName = data.AssetPath;
return EditorTools.GetRegularPath(bundleName).Replace('/', '_').Replace('.', '_');
}
}

View File

@@ -220,7 +220,7 @@ namespace YooAsset.Editor
// Status
StyleColor textColor;
if (providerInfo.Status == (int)ProviderBase.EStatus.Fail)
if (providerInfo.Status == ProviderBase.EStatus.Failed.ToString())
textColor = new StyleColor(Color.yellow);
else
textColor = label1.style.color;

View File

@@ -185,7 +185,7 @@ namespace YooAsset.Editor
// Status
StyleColor textColor;
if (bundleInfo.Status == (int)AssetBundleLoaderBase.EStatus.Failed)
if (bundleInfo.Status == BundleLoaderBase.EStatus.Failed.ToString())
textColor = new StyleColor(Color.yellow);
else
textColor = label1.style.color;

View File

@@ -8,13 +8,11 @@ namespace YooAsset
{
internal class AssetSystemImpl
{
private static string SceneRunningPackage = string.Empty;
private readonly List<AssetBundleLoaderBase> _loaders = new List<AssetBundleLoaderBase>(1000);
private readonly List<BundleLoaderBase> _loaders = new List<BundleLoaderBase>(1000);
private readonly List<ProviderBase> _providers = new List<ProviderBase>(1000);
private readonly Dictionary<string, SceneOperationHandle> _sceneHandles = new Dictionary<string, SceneOperationHandle>(100);
private readonly static Dictionary<string, SceneOperationHandle> _sceneHandles = new Dictionary<string, SceneOperationHandle>(100);
private static long _sceneCreateCount = 0;
private long _sceneCreateCount = 0;
private bool _simulationOnEditor;
private int _loadingMaxNumber;
public IDecryptionServices DecryptionServices { private set; get; }
@@ -71,9 +69,18 @@ namespace YooAsset
/// </summary>
public void DestroyAll()
{
_loaders.Clear();
foreach (var provider in _providers)
{
provider.Destroy();
}
foreach (var loader in _loaders)
{
loader.Destroy(true);
}
_providers.Clear();
_sceneHandles.Clear();
_loaders.Clear();
ClearSceneHandle();
DecryptionServices = null;
BundleServices = null;
@@ -83,6 +90,15 @@ namespace YooAsset
/// 资源回收(卸载引用计数为零的资源)
/// </summary>
public void UnloadUnusedAssets()
{
// 注意:资源包之间可能存在多层深层嵌套,需要多次循环释放。
int loopCount = 10;
for (int i = 0; i < loopCount; i++)
{
UnloadUnusedAssetsInternal();
}
}
private void UnloadUnusedAssetsInternal()
{
if (_simulationOnEditor)
{
@@ -99,12 +115,12 @@ namespace YooAsset
{
for (int i = _loaders.Count - 1; i >= 0; i--)
{
AssetBundleLoaderBase loader = _loaders[i];
BundleLoaderBase loader = _loaders[i];
loader.TryDestroyAllProviders();
}
for (int i = _loaders.Count - 1; i >= 0; i--)
{
AssetBundleLoaderBase loader = _loaders[i];
BundleLoaderBase loader = _loaders[i];
if (loader.CanDestroy())
{
loader.Destroy(false);
@@ -123,15 +139,14 @@ namespace YooAsset
{
provider.Destroy();
}
_providers.Clear();
foreach (var loader in _loaders)
{
loader.Destroy(true);
}
_loaders.Clear();
_sceneHandles.Clear();
_providers.Clear();
_loaders.Clear();
ClearSceneHandle();
// 注意:调用底层接口释放所有资源
Resources.UnloadUnusedAssets();
@@ -144,25 +159,12 @@ namespace YooAsset
{
if (assetInfo.IsInvalid)
{
YooLogger.Error($"Failed to load scene. {assetInfo.Error}");
YooLogger.Error($"Failed to load scene ! {assetInfo.Error}");
CompletedProvider completedProvider = new CompletedProvider(assetInfo);
completedProvider.SetCompleted(assetInfo.Error);
return completedProvider.CreateHandle<SceneOperationHandle>();
}
// 注意:场景只允许运行在一个资源包内
if (string.IsNullOrEmpty(SceneRunningPackage))
{
SceneRunningPackage = BundleServices.GetPackageName();
}
if (BundleServices.GetPackageName() != SceneRunningPackage)
{
CompletedProvider completedProvider = new CompletedProvider(assetInfo);
string error = $"Scene are allowed to running within only {SceneRunningPackage}";
completedProvider.SetCompleted(error);
return completedProvider.CreateHandle<SceneOperationHandle>();
}
// 如果加载的是主场景,则卸载所有缓存的场景
if (sceneMode == LoadSceneMode.Single)
{
@@ -182,6 +184,7 @@ namespace YooAsset
}
var handle = provider.CreateHandle<SceneOperationHandle>();
handle.PackageName = BundleServices.GetPackageName();
_sceneHandles.Add(providerGUID, handle);
return handle;
}
@@ -193,7 +196,7 @@ namespace YooAsset
{
if (assetInfo.IsInvalid)
{
YooLogger.Error($"Failed to load asset. {assetInfo.Error}");
YooLogger.Error($"Failed to load asset ! {assetInfo.Error}");
CompletedProvider completedProvider = new CompletedProvider(assetInfo);
completedProvider.SetCompleted(assetInfo.Error);
return completedProvider.CreateHandle<AssetOperationHandle>();
@@ -220,7 +223,7 @@ namespace YooAsset
{
if (assetInfo.IsInvalid)
{
YooLogger.Error($"Failed to load sub assets. {assetInfo.Error}");
YooLogger.Error($"Failed to load sub assets ! {assetInfo.Error}");
CompletedProvider completedProvider = new CompletedProvider(assetInfo);
completedProvider.SetCompleted(assetInfo.Error);
return completedProvider.CreateHandle<SubAssetsOperationHandle>();
@@ -240,6 +243,33 @@ namespace YooAsset
return provider.CreateHandle<SubAssetsOperationHandle>();
}
/// <summary>
/// 加载原生文件
/// </summary>
public RawFileOperationHandle LoadRawFileAsync(AssetInfo assetInfo)
{
if (assetInfo.IsInvalid)
{
YooLogger.Error($"Failed to load raw file ! {assetInfo.Error}");
CompletedProvider completedProvider = new CompletedProvider(assetInfo);
completedProvider.SetCompleted(assetInfo.Error);
return completedProvider.CreateHandle<RawFileOperationHandle>();
}
string providerGUID = assetInfo.GUID;
ProviderBase provider = TryGetProvider(providerGUID);
if (provider == null)
{
if (_simulationOnEditor)
provider = new DatabaseRawFileProvider(this, providerGUID, assetInfo);
else
provider = new BundledRawFileProvider(this, providerGUID, assetInfo);
provider.InitSpawnDebugInfo();
_providers.Add(provider);
}
return provider.CreateHandle<RawFileOperationHandle>();
}
internal void UnloadSubScene(ProviderBase provider)
{
string providerGUID = provider.ProviderGUID;
@@ -265,19 +295,37 @@ namespace YooAsset
// 卸载未被使用的资源(包括场景)
UnloadUnusedAssets();
}
internal void ClearSceneHandle()
{
// 释放资源包下的所有场景
string packageName = BundleServices.GetPackageName();
List<string> removeList = new List<string>();
foreach (var valuePair in _sceneHandles)
{
if (valuePair.Value.PackageName == packageName)
{
removeList.Add(valuePair.Key);
}
}
internal AssetBundleLoaderBase CreateOwnerAssetBundleLoader(AssetInfo assetInfo)
foreach (var key in removeList)
{
_sceneHandles.Remove(key);
}
}
internal BundleLoaderBase CreateOwnerAssetBundleLoader(AssetInfo assetInfo)
{
BundleInfo bundleInfo = BundleServices.GetBundleInfo(assetInfo);
return CreateAssetBundleLoaderInternal(bundleInfo);
}
internal List<AssetBundleLoaderBase> CreateDependAssetBundleLoaders(AssetInfo assetInfo)
internal List<BundleLoaderBase> CreateDependAssetBundleLoaders(AssetInfo assetInfo)
{
BundleInfo[] depends = BundleServices.GetAllDependBundleInfos(assetInfo);
List<AssetBundleLoaderBase> result = new List<AssetBundleLoaderBase>(depends.Length);
List<BundleLoaderBase> result = new List<BundleLoaderBase>(depends.Length);
foreach (var bundleInfo in depends)
{
AssetBundleLoaderBase dependLoader = CreateAssetBundleLoaderInternal(bundleInfo);
BundleLoaderBase dependLoader = CreateAssetBundleLoaderInternal(bundleInfo);
result.Add(dependLoader);
}
return result;
@@ -290,10 +338,10 @@ namespace YooAsset
}
}
private AssetBundleLoaderBase CreateAssetBundleLoaderInternal(BundleInfo bundleInfo)
private BundleLoaderBase CreateAssetBundleLoaderInternal(BundleInfo bundleInfo)
{
// 如果加载器已经存在
AssetBundleLoaderBase loader = TryGetAssetBundleLoader(bundleInfo.Bundle.BundleName);
BundleLoaderBase loader = TryGetAssetBundleLoader(bundleInfo.Bundle.BundleName);
if (loader != null)
return loader;
@@ -301,18 +349,21 @@ namespace YooAsset
#if UNITY_WEBGL
loader = new AssetBundleWebLoader(this, bundleInfo);
#else
loader = new AssetBundleFileLoader(this, bundleInfo);
if (bundleInfo.Bundle.IsRawFile)
loader = new RawBundleFileLoader(this, bundleInfo);
else
loader = new AssetBundleFileLoader(this, bundleInfo);
#endif
_loaders.Add(loader);
return loader;
}
private AssetBundleLoaderBase TryGetAssetBundleLoader(string bundleName)
private BundleLoaderBase TryGetAssetBundleLoader(string bundleName)
{
AssetBundleLoaderBase loader = null;
BundleLoaderBase loader = null;
for (int i = 0; i < _loaders.Count; i++)
{
AssetBundleLoaderBase temp = _loaders[i];
BundleLoaderBase temp = _loaders[i];
if (temp.MainBundleInfo.Bundle.BundleName.Equals(bundleName))
{
loader = temp;
@@ -348,7 +399,7 @@ namespace YooAsset
providerInfo.SpawnTime = provider.SpawnTime;
providerInfo.LoadingTime = provider.LoadingTime;
providerInfo.RefCount = provider.RefCount;
providerInfo.Status = (int)provider.Status;
providerInfo.Status = provider.Status.ToString();
providerInfo.DependBundleInfos = new List<DebugBundleInfo>();
result.Add(providerInfo);

View File

@@ -22,7 +22,7 @@ namespace YooAsset
{
add
{
if (IsValid == false)
if (IsValidWithWarning == false)
throw new System.Exception($"{nameof(AssetOperationHandle)} is invalid");
if (Provider.IsDone)
value.Invoke(this);
@@ -31,7 +31,7 @@ namespace YooAsset
}
remove
{
if (IsValid == false)
if (IsValidWithWarning == false)
throw new System.Exception($"{nameof(AssetOperationHandle)} is invalid");
_callback -= value;
}
@@ -44,7 +44,7 @@ namespace YooAsset
{
get
{
if (IsValid == false)
if (IsValidWithWarning == false)
return null;
return Provider.AssetObject;
}
@@ -56,7 +56,7 @@ namespace YooAsset
/// <typeparam name="TAsset">资源类型</typeparam>
public TAsset GetAssetObject<TAsset>() where TAsset : UnityEngine.Object
{
if (IsValid == false)
if (IsValidWithWarning == false)
return null;
return Provider.AssetObject as TAsset;
}
@@ -66,7 +66,7 @@ namespace YooAsset
/// </summary>
public void WaitForAsyncComplete()
{
if (IsValid == false)
if (IsValidWithWarning == false)
return;
Provider.WaitForAsyncComplete();
}
@@ -124,7 +124,7 @@ namespace YooAsset
private GameObject InstantiateSyncInternal(Vector3 position, Quaternion rotation, Transform parent)
{
if (IsValid == false)
if (IsValidWithWarning == false)
return null;
if (Provider.AssetObject == null)
return null;

View File

@@ -30,11 +30,11 @@ namespace YooAsset
{
get
{
if (IsValid == false)
if (IsValidWithWarning == false)
return EOperationStatus.None;
if (Provider.Status == ProviderBase.EStatus.Fail)
if (Provider.Status == ProviderBase.EStatus.Failed)
return EOperationStatus.Failed;
else if (Provider.Status == ProviderBase.EStatus.Success)
else if (Provider.Status == ProviderBase.EStatus.Succeed)
return EOperationStatus.Succeed;
else
return EOperationStatus.None;
@@ -48,7 +48,7 @@ namespace YooAsset
{
get
{
if (IsValid == false)
if (IsValidWithWarning == false)
return string.Empty;
return Provider.LastError;
}
@@ -61,7 +61,7 @@ namespace YooAsset
{
get
{
if (IsValid == false)
if (IsValidWithWarning == false)
return 0;
return Provider.Progress;
}
@@ -74,7 +74,7 @@ namespace YooAsset
{
get
{
if (IsValid == false)
if (IsValidWithWarning == false)
return false;
return Provider.IsDone;
}
@@ -84,6 +84,20 @@ namespace YooAsset
/// 句柄是否有效
/// </summary>
public bool IsValid
{
get
{
if (Provider != null && Provider.IsDestroyed == false)
return true;
else
return false;
}
}
/// <summary>
/// 句柄是否有效
/// </summary>
internal bool IsValidWithWarning
{
get
{
@@ -102,26 +116,12 @@ namespace YooAsset
}
}
/// <summary>
/// 句柄是否有效
/// </summary>
public bool IsValidNoWarning
{
get
{
if (Provider != null && Provider.IsDestroyed == false)
return true;
else
return false;
}
}
/// <summary>
/// 释放句柄
/// </summary>
internal void ReleaseInternal()
{
if (IsValid == false)
if (IsValidWithWarning == false)
return;
Provider.ReleaseHandle(this);
Provider = null;

View File

@@ -0,0 +1,95 @@
using System.IO;
using System.Text;
namespace YooAsset
{
public class RawFileOperationHandle : OperationHandleBase
{
private System.Action<RawFileOperationHandle> _callback;
internal RawFileOperationHandle(ProviderBase provider) : base(provider)
{
}
internal override void InvokeCallback()
{
_callback?.Invoke(this);
}
/// <summary>
/// 完成委托
/// </summary>
public event System.Action<RawFileOperationHandle> Completed
{
add
{
if (IsValidWithWarning == false)
throw new System.Exception($"{nameof(RawFileOperationHandle)} is invalid");
if (Provider.IsDone)
value.Invoke(this);
else
_callback += value;
}
remove
{
if (IsValidWithWarning == false)
throw new System.Exception($"{nameof(RawFileOperationHandle)} is invalid");
_callback -= value;
}
}
/// <summary>
/// 等待异步执行完毕
/// </summary>
public void WaitForAsyncComplete()
{
if (IsValidWithWarning == false)
return;
Provider.WaitForAsyncComplete();
}
/// <summary>
/// 释放资源句柄
/// </summary>
public void Release()
{
this.ReleaseInternal();
}
/// <summary>
/// 获取原生文件的二进制数据
/// </summary>
public byte[] GetRawFileData()
{
if (IsValidWithWarning == false)
return null;
string filePath = Provider.RawFilePath;
if (File.Exists(filePath) == false)
return null;
return File.ReadAllBytes(filePath);
}
/// <summary>
/// 获取原生文件的文本数据
/// </summary>
public string GetRawFileText()
{
if (IsValidWithWarning == false)
return null;
string filePath = Provider.RawFilePath;
if (File.Exists(filePath) == false)
return null;
return File.ReadAllText(filePath, Encoding.UTF8);
}
/// <summary>
/// 获取原生文件的路径
/// </summary>
public string GetRawFilePath()
{
if (IsValidWithWarning == false)
return string.Empty;
return Provider.RawFilePath;
}
}
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 7382b7d45cb2b73469e37c334a1599d9
guid: e8420ba734d425a4ba9f19173d74503c
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -3,8 +3,9 @@
namespace YooAsset
{
public class SceneOperationHandle : OperationHandleBase
{
{
private System.Action<SceneOperationHandle> _callback;
internal string PackageName { set; get; }
internal SceneOperationHandle(ProviderBase provider) : base(provider)
{
@@ -21,7 +22,7 @@ namespace YooAsset
{
add
{
if (IsValid == false)
if (IsValidWithWarning == false)
throw new System.Exception($"{nameof(SceneOperationHandle)} is invalid");
if (Provider.IsDone)
value.Invoke(this);
@@ -30,7 +31,7 @@ namespace YooAsset
}
remove
{
if (IsValid == false)
if (IsValidWithWarning == false)
throw new System.Exception($"{nameof(SceneOperationHandle)} is invalid");
_callback -= value;
}
@@ -43,7 +44,7 @@ namespace YooAsset
{
get
{
if (IsValid == false)
if (IsValidWithWarning == false)
return new Scene();
return Provider.SceneObject;
}
@@ -54,7 +55,7 @@ namespace YooAsset
/// </summary>
public bool ActivateScene()
{
if (IsValid == false)
if (IsValidWithWarning == false)
return false;
if (SceneObject.IsValid() && SceneObject.isLoaded)
@@ -73,7 +74,7 @@ namespace YooAsset
/// </summary>
public bool IsMainScene()
{
if (IsValid == false)
if (IsValidWithWarning == false)
return false;
if (Provider is DatabaseSceneProvider)
@@ -98,7 +99,7 @@ namespace YooAsset
public UnloadSceneOperation UnloadAsync()
{
// 如果句柄无效
if (IsValid == false)
if (IsValidWithWarning == false)
{
string error = $"{nameof(SceneOperationHandle)} is invalid.";
var operation = new UnloadSceneOperation(error);

View File

@@ -21,7 +21,7 @@ namespace YooAsset
{
add
{
if (IsValid == false)
if (IsValidWithWarning == false)
throw new System.Exception($"{nameof(SubAssetsOperationHandle)} is invalid");
if (Provider.IsDone)
value.Invoke(this);
@@ -30,7 +30,7 @@ namespace YooAsset
}
remove
{
if (IsValid == false)
if (IsValidWithWarning == false)
throw new System.Exception($"{nameof(SubAssetsOperationHandle)} is invalid");
_callback -= value;
}
@@ -43,7 +43,7 @@ namespace YooAsset
{
get
{
if (IsValid == false)
if (IsValidWithWarning == false)
return null;
return Provider.AllAssetObjects;
}
@@ -54,7 +54,7 @@ namespace YooAsset
/// </summary>
public void WaitForAsyncComplete()
{
if (IsValid == false)
if (IsValidWithWarning == false)
return;
Provider.WaitForAsyncComplete();
}
@@ -75,7 +75,7 @@ namespace YooAsset
/// <param name="assetName">子资源对象名称</param>
public TObject GetSubAssetObject<TObject>(string assetName) where TObject : UnityEngine.Object
{
if (IsValid == false)
if (IsValidWithWarning == false)
return null;
foreach (var assetObject in Provider.AllAssetObjects)
@@ -94,7 +94,7 @@ namespace YooAsset
/// <typeparam name="TObject">子资源对象类型</typeparam>
public TObject[] GetSubAssetObjects<TObject>() where TObject : UnityEngine.Object
{
if (IsValid == false)
if (IsValidWithWarning == false)
return null;
List<TObject> ret = new List<TObject>(Provider.AllAssetObjects.Length);

View File

@@ -6,7 +6,7 @@ using UnityEngine;
namespace YooAsset
{
internal sealed class AssetBundleFileLoader : AssetBundleLoaderBase
internal sealed class AssetBundleFileLoader : BundleLoaderBase
{
private enum ESteps
{
@@ -21,7 +21,6 @@ namespace YooAsset
}
private ESteps _steps = ESteps.None;
private string _fileLoadPath;
private bool _isWaitForAsyncComplete = false;
private bool _isShowWaitForAsyncError = false;
private DownloaderBase _unpacker;
@@ -47,7 +46,7 @@ namespace YooAsset
if (MainBundleInfo.LoadMode == BundleInfo.ELoadMode.LoadFromRemote)
{
_steps = ESteps.Download;
_fileLoadPath = MainBundleInfo.Bundle.CachedFilePath;
FileLoadPath = MainBundleInfo.Bundle.CachedFilePath;
}
else if (MainBundleInfo.LoadMode == BundleInfo.ELoadMode.LoadFromStreaming)
{
@@ -56,22 +55,22 @@ namespace YooAsset
if (loadMethod == EBundleLoadMethod.LoadFromMemory || loadMethod == EBundleLoadMethod.LoadFromStream)
{
_steps = ESteps.Unpack;
_fileLoadPath = MainBundleInfo.Bundle.CachedFilePath;
FileLoadPath = MainBundleInfo.Bundle.CachedFilePath;
}
else
{
_steps = ESteps.LoadFile;
_fileLoadPath = MainBundleInfo.Bundle.StreamingFilePath;
FileLoadPath = MainBundleInfo.Bundle.StreamingFilePath;
}
#else
_steps = ESteps.LoadFile;
_fileLoadPath = MainBundleInfo.Bundle.StreamingFilePath;
FileLoadPath = MainBundleInfo.Bundle.StreamingFilePath;
#endif
}
else if (MainBundleInfo.LoadMode == BundleInfo.ELoadMode.LoadFromCache)
{
_steps = ESteps.LoadFile;
_fileLoadPath = MainBundleInfo.Bundle.CachedFilePath;
FileLoadPath = MainBundleInfo.Bundle.CachedFilePath;
}
else
{
@@ -137,11 +136,11 @@ namespace YooAsset
{
#if UNITY_EDITOR
// 注意Unity2017.4编辑器模式下如果AssetBundle文件不存在会导致编辑器崩溃这里做了预判。
if (System.IO.File.Exists(_fileLoadPath) == false)
if (System.IO.File.Exists(FileLoadPath) == false)
{
_steps = ESteps.Done;
Status = EStatus.Failed;
LastError = $"Not found assetBundle file : {_fileLoadPath}";
LastError = $"Not found assetBundle file : {FileLoadPath}";
YooLogger.Error(LastError);
return;
}
@@ -152,9 +151,9 @@ namespace YooAsset
if (loadMethod == EBundleLoadMethod.Normal)
{
if (_isWaitForAsyncComplete)
CacheBundle = AssetBundle.LoadFromFile(_fileLoadPath);
CacheBundle = AssetBundle.LoadFromFile(FileLoadPath);
else
_createRequest = AssetBundle.LoadFromFileAsync(_fileLoadPath);
_createRequest = AssetBundle.LoadFromFileAsync(FileLoadPath);
}
else
{
@@ -169,15 +168,15 @@ namespace YooAsset
DecryptFileInfo fileInfo = new DecryptFileInfo();
fileInfo.BundleName = MainBundleInfo.Bundle.BundleName;
fileInfo.FilePath = _fileLoadPath;
fileInfo.FilePath = FileLoadPath;
if (loadMethod == EBundleLoadMethod.LoadFromFileOffset)
{
ulong offset = Impl.DecryptionServices.LoadFromFileOffset(fileInfo);
if (_isWaitForAsyncComplete)
CacheBundle = AssetBundle.LoadFromFile(_fileLoadPath, 0, offset);
CacheBundle = AssetBundle.LoadFromFile(FileLoadPath, 0, offset);
else
_createRequest = AssetBundle.LoadFromFileAsync(_fileLoadPath, 0, offset);
_createRequest = AssetBundle.LoadFromFileAsync(FileLoadPath, 0, offset);
}
else if (loadMethod == EBundleLoadMethod.LoadFromMemory)
{
@@ -279,6 +278,14 @@ namespace YooAsset
int frame = 1000;
while (true)
{
// 文件解压
if (_unpacker != null)
{
_unpacker.Update();
if (_unpacker.IsDone() == false)
continue;
}
// 保险机制
// 注意如果需要从WEB端下载资源可能会触发保险机制
frame--;

View File

@@ -7,7 +7,7 @@ using UnityEngine.Networking;
namespace YooAsset
{
internal sealed class AssetBundleWebLoader : AssetBundleLoaderBase
internal sealed class AssetBundleWebLoader : BundleLoaderBase
{
private enum ESteps
{
@@ -24,7 +24,6 @@ namespace YooAsset
private ESteps _steps = ESteps.None;
private float _tryTimer = 0;
private string _fileLoadPath;
private bool _isShowWaitForAsyncError = false;
private DownloaderBase _downloader;
private UnityWebRequest _webRequest;
@@ -48,17 +47,17 @@ namespace YooAsset
if (MainBundleInfo.LoadMode == BundleInfo.ELoadMode.LoadFromRemote)
{
_steps = ESteps.Download;
_fileLoadPath = MainBundleInfo.Bundle.CachedFilePath;
FileLoadPath = MainBundleInfo.Bundle.CachedFilePath;
}
else if (MainBundleInfo.LoadMode == BundleInfo.ELoadMode.LoadFromStreaming)
{
_steps = ESteps.LoadWebFile;
_fileLoadPath = MainBundleInfo.Bundle.StreamingFilePath;
FileLoadPath = MainBundleInfo.Bundle.StreamingFilePath;
}
else if (MainBundleInfo.LoadMode == BundleInfo.ELoadMode.LoadFromCache)
{
_steps = ESteps.LoadCacheFile;
_fileLoadPath = MainBundleInfo.Bundle.CachedFilePath;
FileLoadPath = MainBundleInfo.Bundle.CachedFilePath;
}
else
{
@@ -97,11 +96,11 @@ namespace YooAsset
{
#if UNITY_EDITOR
// 注意Unity2017.4编辑器模式下如果AssetBundle文件不存在会导致编辑器崩溃这里做了预判。
if (System.IO.File.Exists(_fileLoadPath) == false)
if (System.IO.File.Exists(FileLoadPath) == false)
{
_steps = ESteps.Done;
Status = EStatus.Failed;
LastError = $"Not found assetBundle file : {_fileLoadPath}";
LastError = $"Not found assetBundle file : {FileLoadPath}";
YooLogger.Error(LastError);
return;
}
@@ -111,7 +110,7 @@ namespace YooAsset
var loadMethod = (EBundleLoadMethod)MainBundleInfo.Bundle.LoadMethod;
if (loadMethod == EBundleLoadMethod.Normal)
{
_createRequest = AssetBundle.LoadFromFileAsync(_fileLoadPath);
_createRequest = AssetBundle.LoadFromFileAsync(FileLoadPath);
}
else
{
@@ -163,7 +162,8 @@ namespace YooAsset
// 5. 从WEB网站获取AssetBundle文件
if (_steps == ESteps.LoadWebFile)
{
_webRequest = UnityWebRequestAssetBundle.GetAssetBundle(_fileLoadPath, Hash128.Parse(MainBundleInfo.Bundle.FileHash));
var hash = Hash128.Parse(MainBundleInfo.Bundle.FileHash);
_webRequest = UnityWebRequestAssetBundle.GetAssetBundle(FileLoadPath, hash);
_webRequest.SendWebRequest();
_steps = ESteps.CheckLoadWebFile;
}
@@ -180,7 +180,7 @@ namespace YooAsset
if (_webRequest.isNetworkError || _webRequest.isHttpError)
#endif
{
YooLogger.Warning($"Failed to get asset bundle from web : {_fileLoadPath} Error : {_webRequest.error}");
YooLogger.Warning($"Failed to get asset bundle from web : {FileLoadPath} Error : {_webRequest.error}");
_steps = ESteps.TryLoadWebFile;
_tryTimer = 0;
}

View File

@@ -5,7 +5,7 @@ using UnityEngine;
namespace YooAsset
{
internal abstract class AssetBundleLoaderBase
internal abstract class BundleLoaderBase
{
public enum EStatus
{
@@ -46,9 +46,10 @@ namespace YooAsset
private readonly List<ProviderBase> _providers = new List<ProviderBase>(100);
internal AssetBundle CacheBundle { set; get; }
internal string FileLoadPath { set; get; }
public AssetBundleLoaderBase(AssetSystemImpl impl, BundleInfo bundleInfo)
public BundleLoaderBase(AssetSystemImpl impl, BundleInfo bundleInfo)
{
Impl = impl;
MainBundleInfo = bundleInfo;

View File

@@ -9,10 +9,10 @@ namespace YooAsset
/// <summary>
/// 依赖的资源包加载器列表
/// </summary>
private readonly List<AssetBundleLoaderBase> _dependBundles;
private readonly List<BundleLoaderBase> _dependBundles;
public DependAssetBundleGroup(List<AssetBundleLoaderBase> dpendBundles)
public DependAssetBundleGroup(List<BundleLoaderBase> dpendBundles)
{
_dependBundles = dpendBundles;
}
@@ -37,7 +37,7 @@ namespace YooAsset
{
foreach (var loader in _dependBundles)
{
if (loader.Status != AssetBundleLoaderBase.EStatus.Succeed)
if (loader.Status != BundleLoaderBase.EStatus.Succeed)
{
return false;
}
@@ -52,7 +52,7 @@ namespace YooAsset
{
foreach (var loader in _dependBundles)
{
if (loader.Status != AssetBundleLoaderBase.EStatus.Succeed)
if (loader.Status != BundleLoaderBase.EStatus.Succeed)
{
return loader.LastError;
}
@@ -104,7 +104,7 @@ namespace YooAsset
var bundleInfo = new DebugBundleInfo();
bundleInfo.BundleName = loader.MainBundleInfo.Bundle.BundleName;
bundleInfo.RefCount = loader.RefCount;
bundleInfo.Status = (int)loader.Status;
bundleInfo.Status = loader.Status.ToString();
output.Add(bundleInfo);
}
}

View File

@@ -0,0 +1,171 @@
using System.IO;
namespace YooAsset
{
internal class RawBundleFileLoader : BundleLoaderBase
{
private enum ESteps
{
None,
Download,
CheckDownload,
Unpack,
CheckUnpack,
CheckFile,
Done,
}
private ESteps _steps = ESteps.None;
private bool _isShowWaitForAsyncError = false;
private DownloaderBase _unpacker;
private DownloaderBase _downloader;
public RawBundleFileLoader(AssetSystemImpl impl, BundleInfo bundleInfo) : base(impl, bundleInfo)
{
}
/// <summary>
/// 轮询更新
/// </summary>
public override void Update()
{
if (_steps == ESteps.Done)
return;
if (_steps == ESteps.None)
{
if (MainBundleInfo.LoadMode == BundleInfo.ELoadMode.LoadFromRemote)
{
_steps = ESteps.Download;
FileLoadPath = MainBundleInfo.Bundle.CachedFilePath;
}
else if (MainBundleInfo.LoadMode == BundleInfo.ELoadMode.LoadFromStreaming)
{
#if UNITY_ANDROID || UNITY_WEBGL
_steps = ESteps.Unpack;
FileLoadPath = MainBundleInfo.Bundle.CachedFilePath;
#else
_steps = ESteps.CheckFile;
FileLoadPath = MainBundleInfo.Bundle.StreamingFilePath;
#endif
}
else if (MainBundleInfo.LoadMode == BundleInfo.ELoadMode.LoadFromCache)
{
_steps = ESteps.CheckFile;
FileLoadPath = MainBundleInfo.Bundle.CachedFilePath;
}
else
{
throw new System.NotImplementedException(MainBundleInfo.LoadMode.ToString());
}
}
// 1. 下载远端文件
if (_steps == ESteps.Download)
{
int failedTryAgain = int.MaxValue;
_downloader = DownloadSystem.BeginDownload(MainBundleInfo, failedTryAgain);
_steps = ESteps.CheckDownload;
}
// 2. 检测下载结果
if (_steps == ESteps.CheckDownload)
{
if (_downloader.IsDone() == false)
return;
if (_downloader.HasError())
{
_steps = ESteps.Done;
Status = EStatus.Failed;
LastError = _downloader.GetLastError();
}
else
{
_steps = ESteps.CheckFile;
}
}
// 3. 解压内置文件
if (_steps == ESteps.Unpack)
{
int failedTryAgain = 1;
var bundleInfo = HostPlayModeImpl.ConvertToUnpackInfo(MainBundleInfo.Bundle);
_unpacker = DownloadSystem.BeginDownload(bundleInfo, failedTryAgain);
_steps = ESteps.CheckUnpack;
}
// 4. 检测解压结果
if (_steps == ESteps.CheckUnpack)
{
if (_unpacker.IsDone() == false)
return;
if (_unpacker.HasError())
{
_steps = ESteps.Done;
Status = EStatus.Failed;
LastError = _unpacker.GetLastError();
}
else
{
_steps = ESteps.CheckFile;
}
}
// 5. 检测结果
if (_steps == ESteps.CheckFile)
{
_steps = ESteps.Done;
if (File.Exists(FileLoadPath))
{
Status = EStatus.Succeed;
}
else
{
Status = EStatus.Failed;
LastError = $"Raw file not found : {FileLoadPath}";
}
}
}
/// <summary>
/// 主线程等待异步操作完毕
/// </summary>
public override void WaitForAsyncComplete()
{
int frame = 1000;
while (true)
{
// 文件解压
if (_unpacker != null)
{
_unpacker.Update();
if (_unpacker.IsDone() == false)
continue;
}
// 保险机制
// 注意如果需要从WEB端下载资源可能会触发保险机制
frame--;
if (frame == 0)
{
if (_isShowWaitForAsyncError == false)
{
_isShowWaitForAsyncError = true;
YooLogger.Error($"WaitForAsyncComplete failed ! Try load bundle : {MainBundleInfo.Bundle.BundleName} from remote with sync load method !");
}
break;
}
// 驱动流程
Update();
// 完成后退出
if (IsDone())
break;
}
}
}
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 77a44b35e325fd746b72741d7acf4106
guid: fa39f24727abe514093f18787c0c7e27
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -41,7 +41,7 @@ namespace YooAsset
if (_steps == ESteps.Clone)
{
if (_handle.IsValid == false)
if (_handle.IsValidWithWarning == false)
{
_steps = ESteps.Done;
Status = EOperationStatus.Failed;

View File

@@ -1,468 +0,0 @@
using System.IO;
namespace YooAsset
{
/// <summary>
/// 原生文件操作
/// </summary>
public abstract class RawFileOperation : AsyncOperationBase
{
internal readonly BundleInfo _bundleInfo;
/// <summary>
/// 原生文件的拷贝路径
/// </summary>
public string CopyPath { private set; get; }
internal RawFileOperation(BundleInfo bundleInfo, string copyPath)
{
_bundleInfo = bundleInfo;
CopyPath = copyPath;
}
/// <summary>
/// 原生文件的缓存路径
/// </summary>
public abstract string GetCachePath();
/// <summary>
/// 获取原生文件的二进制数据
/// </summary>
public byte[] LoadFileData()
{
string filePath = GetCachePath();
if (File.Exists(filePath) == false)
return null;
return File.ReadAllBytes(filePath);
}
/// <summary>
/// 获取原生文件的文本数据
/// </summary>
public string LoadFileText()
{
string filePath = GetCachePath();
if (File.Exists(filePath) == false)
return string.Empty;
return File.ReadAllText(filePath, System.Text.Encoding.UTF8);
}
}
/// <summary>
/// 发生错误的原生文件操作
/// </summary>
internal sealed class CompletedRawFileOperation : RawFileOperation
{
private readonly string _error;
internal CompletedRawFileOperation(string error, string copyPath) : base(null, copyPath)
{
_error = error;
}
internal override void Start()
{
Status = EOperationStatus.Failed;
Error = _error;
}
internal override void Update()
{
}
/// <summary>
/// 原生文件的缓存路径
/// </summary>
public override string GetCachePath()
{
return string.Empty;
}
}
/// <summary>
/// 编辑器下模拟运行的原生文件操作
/// </summary>
internal sealed class EditorPlayModeRawFileOperation : RawFileOperation
{
private enum ESteps
{
None,
Prepare,
CheckAndCopyFile,
Done,
}
private ESteps _steps = ESteps.None;
internal EditorPlayModeRawFileOperation(BundleInfo bundleInfo, string copyPath) : base(bundleInfo, copyPath)
{
}
internal override void Start()
{
_steps = ESteps.Prepare;
}
internal override void Update()
{
if (_steps == ESteps.None || _steps == ESteps.Done)
return;
// 1. 准备工作
if (_steps == ESteps.Prepare)
{
if (_bundleInfo.LoadMode == BundleInfo.ELoadMode.LoadFromEditor)
{
_steps = ESteps.CheckAndCopyFile;
return; // 模拟实现异步操作
}
else
{
throw new System.NotImplementedException(_bundleInfo.LoadMode.ToString());
}
}
// 2. 检测并拷贝原生文件
if (_steps == ESteps.CheckAndCopyFile)
{
// 如果不需要保存文件
if (string.IsNullOrEmpty(CopyPath))
{
_steps = ESteps.Done;
Status = EOperationStatus.Succeed;
return;
}
// 如果原生文件已经存在,则将其删除
if (File.Exists(CopyPath))
{
File.Delete(CopyPath);
}
try
{
FileUtility.CreateFileDirectory(CopyPath);
File.Copy(GetCachePath(), CopyPath, true);
_steps = ESteps.Done;
Status = EOperationStatus.Succeed;
}
catch (System.Exception e)
{
_steps = ESteps.Done;
Status = EOperationStatus.Failed;
Error = e.Message;
}
}
}
/// <summary>
/// 原生文件的缓存路径
/// </summary>
public override string GetCachePath()
{
if (_bundleInfo == null)
return string.Empty;
return _bundleInfo.EditorAssetPath;
}
}
/// <summary>
/// 离线模式的原生文件操作
/// </summary>
internal sealed class OfflinePlayModeRawFileOperation : RawFileOperation
{
private enum ESteps
{
None,
Prepare,
Unpack,
CheckUnpack,
CheckAndCopyFile,
Done,
}
private ESteps _steps = ESteps.None;
private DownloaderBase _unpacker;
public OfflinePlayModeRawFileOperation(BundleInfo bundleInfo, string copyPath) : base(bundleInfo, copyPath)
{
}
internal override void Start()
{
_steps = ESteps.Prepare;
}
internal override void Update()
{
if (_steps == ESteps.None || _steps == ESteps.Done)
return;
// 1. 准备工作
if (_steps == ESteps.Prepare)
{
if (_bundleInfo.LoadMode == BundleInfo.ELoadMode.None)
{
_steps = ESteps.Done;
Status = EOperationStatus.Failed;
Error = $"Bundle info is invalid : {_bundleInfo.Bundle.BundleName}";
}
else if (_bundleInfo.LoadMode == BundleInfo.ELoadMode.LoadFromStreaming)
{
_steps = ESteps.Unpack;
}
else if (_bundleInfo.LoadMode == BundleInfo.ELoadMode.LoadFromCache)
{
_steps = ESteps.CheckAndCopyFile;
}
else
{
throw new System.NotImplementedException(_bundleInfo.LoadMode.ToString());
}
}
// 2. 内置文件解压
if (_steps == ESteps.Unpack)
{
int failedTryAgain = 1;
var bundleInfo = HostPlayModeImpl.ConvertToUnpackInfo(_bundleInfo.Bundle);
_unpacker = DownloadSystem.BeginDownload(bundleInfo, failedTryAgain);
_steps = ESteps.CheckUnpack;
}
// 3. 检测内置文件解压结果
if (_steps == ESteps.CheckUnpack)
{
Progress = _unpacker.DownloadProgress;
if (_unpacker.IsDone() == false)
return;
if (_unpacker.HasError())
{
_steps = ESteps.Done;
Status = EOperationStatus.Failed;
Error = _unpacker.GetLastError();
}
else
{
_steps = ESteps.CheckAndCopyFile;
}
}
// 4. 检测并拷贝原生文件
if (_steps == ESteps.CheckAndCopyFile)
{
// 如果不需要保存文件
if (string.IsNullOrEmpty(CopyPath))
{
_steps = ESteps.Done;
Status = EOperationStatus.Succeed;
return;
}
// 如果原生文件已经存在,则验证其完整性
if (File.Exists(CopyPath))
{
var verifyResult = CacheSystem.VerifyContentInternal(CopyPath, _bundleInfo.Bundle.FileSize, _bundleInfo.Bundle.FileCRC, EVerifyLevel.High);
if (verifyResult == EVerifyResult.Succeed)
{
_steps = ESteps.Done;
Status = EOperationStatus.Succeed;
return;
}
else
{
File.Delete(CopyPath);
}
}
try
{
FileUtility.CreateFileDirectory(CopyPath);
File.Copy(GetCachePath(), CopyPath, true);
_steps = ESteps.Done;
Status = EOperationStatus.Succeed;
}
catch (System.Exception e)
{
_steps = ESteps.Done;
Status = EOperationStatus.Failed;
Error = e.Message;
}
}
}
/// <summary>
/// 原生文件的缓存路径
/// </summary>
public override string GetCachePath()
{
if (_bundleInfo == null)
return string.Empty;
return _bundleInfo.Bundle.CachedFilePath;
}
}
/// <summary>
/// 联机模式的原生文件操作
/// </summary>
internal sealed class HostPlayModeRawFileOperation : RawFileOperation
{
private enum ESteps
{
None,
Prepare,
Download,
CheckDownload,
Unpack,
CheckUnpack,
CheckAndCopyFile,
Done,
}
private ESteps _steps = ESteps.None;
private DownloaderBase _unpacker;
private DownloaderBase _downloader;
internal HostPlayModeRawFileOperation(BundleInfo bundleInfo, string copyPath) : base(bundleInfo, copyPath)
{
}
internal override void Start()
{
_steps = ESteps.Prepare;
}
internal override void Update()
{
if (_steps == ESteps.None || _steps == ESteps.Done)
return;
// 1. 准备工作
if (_steps == ESteps.Prepare)
{
if (_bundleInfo.LoadMode == BundleInfo.ELoadMode.None)
{
_steps = ESteps.Done;
Status = EOperationStatus.Failed;
Error = $"Bundle info is invalid : {_bundleInfo.Bundle.BundleName}";
}
else if (_bundleInfo.LoadMode == BundleInfo.ELoadMode.LoadFromRemote)
{
_steps = ESteps.Download;
}
else if (_bundleInfo.LoadMode == BundleInfo.ELoadMode.LoadFromStreaming)
{
_steps = ESteps.Unpack;
}
else if (_bundleInfo.LoadMode == BundleInfo.ELoadMode.LoadFromCache)
{
_steps = ESteps.CheckAndCopyFile;
}
else
{
throw new System.NotImplementedException(_bundleInfo.LoadMode.ToString());
}
}
// 2. 下载远端文件
if (_steps == ESteps.Download)
{
int failedTryAgain = int.MaxValue;
_downloader = DownloadSystem.BeginDownload(_bundleInfo, failedTryAgain);
_steps = ESteps.CheckDownload;
}
// 3. 检测下载结果
if (_steps == ESteps.CheckDownload)
{
Progress = _downloader.DownloadProgress;
if (_downloader.IsDone() == false)
return;
if (_downloader.HasError())
{
_steps = ESteps.Done;
Status = EOperationStatus.Failed;
Error = _downloader.GetLastError();
}
else
{
_steps = ESteps.CheckAndCopyFile;
}
}
// 3. 解压内置文件
if (_steps == ESteps.Unpack)
{
int failedTryAgain = 1;
var bundleInfo = HostPlayModeImpl.ConvertToUnpackInfo(_bundleInfo.Bundle);
_unpacker = DownloadSystem.BeginDownload(bundleInfo, failedTryAgain);
_steps = ESteps.CheckUnpack;
}
// 4. 检测解压结果
if (_steps == ESteps.CheckUnpack)
{
Progress = _unpacker.DownloadProgress;
if (_unpacker.IsDone() == false)
return;
if (_unpacker.HasError())
{
_steps = ESteps.Done;
Status = EOperationStatus.Failed;
Error = _unpacker.GetLastError();
}
else
{
_steps = ESteps.CheckAndCopyFile;
}
}
// 5. 检测并拷贝原生文件
if (_steps == ESteps.CheckAndCopyFile)
{
// 如果不需要保存文件
if (string.IsNullOrEmpty(CopyPath))
{
_steps = ESteps.Done;
Status = EOperationStatus.Succeed;
return;
}
// 如果原生文件已经存在,则验证其完整性
if (File.Exists(CopyPath))
{
var verifyResult = CacheSystem.VerifyContentInternal(CopyPath, _bundleInfo.Bundle.FileSize, _bundleInfo.Bundle.FileCRC, EVerifyLevel.High);
if (verifyResult == EVerifyResult.Succeed)
{
_steps = ESteps.Done;
Status = EOperationStatus.Succeed;
return;
}
else
{
File.Delete(CopyPath);
}
}
try
{
FileUtility.CreateFileDirectory(CopyPath);
File.Copy(GetCachePath(), CopyPath, true);
_steps = ESteps.Done;
Status = EOperationStatus.Succeed;
}
catch (System.Exception e)
{
_steps = ESteps.Done;
Status = EOperationStatus.Failed;
Error = e.Message;
}
}
}
/// <summary>
/// 原生文件的缓存路径
/// </summary>
public override string GetCachePath()
{
if (_bundleInfo == null)
return string.Empty;
return _bundleInfo.Bundle.CachedFilePath;
}
}
}

View File

@@ -48,15 +48,15 @@ namespace YooAsset
if (DependBundleGroup.IsSucceed() == false)
{
Status = EStatus.Fail;
Status = EStatus.Failed;
LastError = DependBundleGroup.GetLastError();
InvokeCompletion();
return;
}
if (OwnerBundle.Status != AssetBundleLoaderBase.EStatus.Succeed)
if (OwnerBundle.Status != BundleLoaderBase.EStatus.Succeed)
{
Status = EStatus.Fail;
Status = EStatus.Failed;
LastError = OwnerBundle.LastError;
InvokeCompletion();
return;
@@ -66,7 +66,7 @@ namespace YooAsset
{
if (OwnerBundle.IsDestroyed)
throw new System.Exception("Should never get here !");
Status = EStatus.Fail;
Status = EStatus.Failed;
LastError = $"The bundle {OwnerBundle.MainBundleInfo.Bundle.BundleName} has been destroyed by unity bugs !";
YooLogger.Error(LastError);
InvokeCompletion();
@@ -115,8 +115,8 @@ namespace YooAsset
}
}
Status = AssetObject == null ? EStatus.Fail : EStatus.Success;
if (Status == EStatus.Fail)
Status = AssetObject == null ? EStatus.Failed : EStatus.Succeed;
if (Status == EStatus.Failed)
{
if (MainAssetInfo.AssetType == null)
LastError = $"Failed to load asset : {MainAssetInfo.AssetPath} AssetType : null AssetBundle : {OwnerBundle.MainBundleInfo.Bundle.BundleName}";

View File

@@ -5,7 +5,7 @@ namespace YooAsset
{
internal abstract class BundledProvider : ProviderBase
{
protected AssetBundleLoaderBase OwnerBundle { private set; get; }
protected BundleLoaderBase OwnerBundle { private set; get; }
protected DependAssetBundleGroup DependBundleGroup { private set; get; }
public BundledProvider(AssetSystemImpl impl, string providerGUID, AssetInfo assetInfo) : base(impl, providerGUID, assetInfo)
@@ -43,7 +43,7 @@ namespace YooAsset
var bundleInfo = new DebugBundleInfo();
bundleInfo.BundleName = OwnerBundle.MainBundleInfo.Bundle.BundleName;
bundleInfo.RefCount = OwnerBundle.RefCount;
bundleInfo.Status = (int)OwnerBundle.Status;
bundleInfo.Status = OwnerBundle.Status.ToString();
output.Add(bundleInfo);
DependBundleGroup.GetBundleDebugInfos(output);

View File

@@ -0,0 +1,61 @@

namespace YooAsset
{
internal class BundledRawFileProvider : BundledProvider
{
public override float Progress
{
get
{
if (IsDone)
return 1f;
else
return 0;
}
}
public BundledRawFileProvider(AssetSystemImpl impl, string providerGUID, AssetInfo assetInfo) : base(impl, providerGUID, assetInfo)
{
}
public override void Update()
{
DebugRecording();
if (IsDone)
return;
if (Status == EStatus.None)
{
Status = EStatus.CheckBundle;
}
if (Status == EStatus.CheckBundle)
{
if (IsWaitForAsyncComplete)
{
OwnerBundle.WaitForAsyncComplete();
}
if (OwnerBundle.IsDone() == false)
return;
if (OwnerBundle.Status != BundleLoaderBase.EStatus.Succeed)
{
Status = EStatus.Failed;
LastError = OwnerBundle.LastError;
InvokeCompletion();
return;
}
Status = EStatus.Checking;
}
if (Status == EStatus.Checking)
{
RawFilePath = OwnerBundle.FileLoadPath;
Status = EStatus.Succeed;
InvokeCompletion();
}
}
}
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: e26f14db9addb4c49b4f0f520bf75d9d
guid: 8a00889582fd95446b103af1074fa6ba
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -52,15 +52,15 @@ namespace YooAsset
if (DependBundleGroup.IsSucceed() == false)
{
Status = EStatus.Fail;
Status = EStatus.Failed;
LastError = DependBundleGroup.GetLastError();
InvokeCompletion();
return;
}
if (OwnerBundle.Status != AssetBundleLoaderBase.EStatus.Succeed)
if (OwnerBundle.Status != BundleLoaderBase.EStatus.Succeed)
{
Status = EStatus.Fail;
Status = EStatus.Failed;
LastError = OwnerBundle.LastError;
InvokeCompletion();
return;
@@ -83,7 +83,7 @@ namespace YooAsset
}
else
{
Status = EStatus.Fail;
Status = EStatus.Failed;
LastError = $"Failed to load scene : {_sceneName}";
YooLogger.Error(LastError);
InvokeCompletion();
@@ -98,8 +98,8 @@ namespace YooAsset
if (SceneObject.IsValid() && _activateOnLoad)
SceneManager.SetActiveScene(SceneObject);
Status = SceneObject.IsValid() ? EStatus.Success : EStatus.Fail;
if (Status == EStatus.Fail)
Status = SceneObject.IsValid() ? EStatus.Succeed : EStatus.Failed;
if (Status == EStatus.Failed)
{
LastError = $"The load scene is invalid : {MainAssetInfo.AssetPath}";
YooLogger.Error(LastError);

View File

@@ -48,15 +48,15 @@ namespace YooAsset
if (DependBundleGroup.IsSucceed() == false)
{
Status = EStatus.Fail;
Status = EStatus.Failed;
LastError = DependBundleGroup.GetLastError();
InvokeCompletion();
return;
}
if (OwnerBundle.Status != AssetBundleLoaderBase.EStatus.Succeed)
if (OwnerBundle.Status != BundleLoaderBase.EStatus.Succeed)
{
Status = EStatus.Fail;
Status = EStatus.Failed;
LastError = OwnerBundle.LastError;
InvokeCompletion();
return;
@@ -104,8 +104,8 @@ namespace YooAsset
}
}
Status = AllAssetObjects == null ? EStatus.Fail : EStatus.Success;
if (Status == EStatus.Fail)
Status = AllAssetObjects == null ? EStatus.Failed : EStatus.Succeed;
if (Status == EStatus.Failed)
{
if (MainAssetInfo.AssetType == null)
LastError = $"Failed to load sub assets : {MainAssetInfo.AssetPath} AssetType : null AssetBundle : {OwnerBundle.MainBundleInfo.Bundle.BundleName}";

View File

@@ -24,7 +24,7 @@ namespace YooAsset
{
if (Status == EStatus.None)
{
Status = EStatus.Fail;
Status = EStatus.Failed;
LastError = error;
InvokeCompletion();
}

View File

@@ -32,7 +32,7 @@ namespace YooAsset
string guid = UnityEditor.AssetDatabase.AssetPathToGUID(MainAssetInfo.AssetPath);
if (string.IsNullOrEmpty(guid))
{
Status = EStatus.Fail;
Status = EStatus.Failed;
LastError = $"Not found asset : {MainAssetInfo.AssetPath}";
YooLogger.Error(LastError);
InvokeCompletion();
@@ -59,8 +59,8 @@ namespace YooAsset
// 2. 检测加载结果
if (Status == EStatus.Checking)
{
Status = AssetObject == null ? EStatus.Fail : EStatus.Success;
if (Status == EStatus.Fail)
Status = AssetObject == null ? EStatus.Failed : EStatus.Succeed;
if (Status == EStatus.Failed)
{
if (MainAssetInfo.AssetType == null)
LastError = $"Failed to load asset object : {MainAssetInfo.AssetPath} AssetType : null";

View File

@@ -0,0 +1,55 @@

namespace YooAsset
{
internal class DatabaseRawFileProvider : ProviderBase
{
public override float Progress
{
get
{
if (IsDone)
return 1f;
else
return 0;
}
}
public DatabaseRawFileProvider(AssetSystemImpl impl, string providerGUID, AssetInfo assetInfo) : base(impl, providerGUID, assetInfo)
{
}
public override void Update()
{
#if UNITY_EDITOR
if (IsDone)
return;
if (Status == EStatus.None)
{
// 检测资源文件是否存在
string guid = UnityEditor.AssetDatabase.AssetPathToGUID(MainAssetInfo.AssetPath);
if (string.IsNullOrEmpty(guid))
{
Status = EStatus.Failed;
LastError = $"Not found asset : {MainAssetInfo.AssetPath}";
YooLogger.Error(LastError);
InvokeCompletion();
return;
}
Status = EStatus.Checking;
// 注意:模拟异步加载效果提前返回
if (IsWaitForAsyncComplete == false)
return;
}
if(Status == EStatus.Checking)
{
RawFilePath = MainAssetInfo.AssetPath;
Status = EStatus.Succeed;
InvokeCompletion();
}
#endif
}
}
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 64d5737a6f10f8a45b6147e318faa22a
guid: 41d0e9bbc5a3a5b4e8b05d60d40d495a
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -51,7 +51,7 @@ namespace YooAsset
}
else
{
Status = EStatus.Fail;
Status = EStatus.Failed;
LastError = $"Failed to load scene : {MainAssetInfo.AssetPath}";
YooLogger.Error(LastError);
InvokeCompletion();
@@ -66,8 +66,8 @@ namespace YooAsset
if (SceneObject.IsValid() && _activateOnLoad)
SceneManager.SetActiveScene(SceneObject);
Status = SceneObject.IsValid() ? EStatus.Success : EStatus.Fail;
if (Status == EStatus.Fail)
Status = SceneObject.IsValid() ? EStatus.Succeed : EStatus.Failed;
if (Status == EStatus.Failed)
{
LastError = $"The loaded scene is invalid : {MainAssetInfo.AssetPath}";
YooLogger.Error(LastError);

View File

@@ -32,7 +32,7 @@ namespace YooAsset
string guid = UnityEditor.AssetDatabase.AssetPathToGUID(MainAssetInfo.AssetPath);
if (string.IsNullOrEmpty(guid))
{
Status = EStatus.Fail;
Status = EStatus.Failed;
LastError = $"Not found asset : {MainAssetInfo.AssetPath}";
YooLogger.Error(LastError);
InvokeCompletion();
@@ -70,8 +70,8 @@ namespace YooAsset
// 2. 检测加载结果
if (Status == EStatus.Checking)
{
Status = AllAssetObjects == null ? EStatus.Fail : EStatus.Success;
if (Status == EStatus.Fail)
Status = AllAssetObjects == null ? EStatus.Failed : EStatus.Succeed;
if (Status == EStatus.Failed)
{
if (MainAssetInfo.AssetType == null)
LastError = $"Failed to load sub assets : {MainAssetInfo.AssetPath} AssetType : null";

View File

@@ -13,8 +13,8 @@ namespace YooAsset
CheckBundle,
Loading,
Checking,
Success,
Fail,
Succeed,
Failed,
}
/// <summary>
@@ -47,6 +47,11 @@ namespace YooAsset
/// </summary>
public UnityEngine.SceneManagement.Scene SceneObject { protected set; get; }
/// <summary>
/// 原生文件路径
/// </summary>
public string RawFilePath { protected set; get; }
/// <summary>
/// 当前的加载状态
@@ -75,7 +80,7 @@ namespace YooAsset
{
get
{
return Status == EStatus.Success || Status == EStatus.Fail;
return Status == EStatus.Succeed || Status == EStatus.Failed;
}
}
@@ -152,6 +157,8 @@ namespace YooAsset
handle = new SceneOperationHandle(this);
else if (typeof(T) == typeof(SubAssetsOperationHandle))
handle = new SubAssetsOperationHandle(this);
else if (typeof(T) == typeof(RawFileOperationHandle))
handle = new RawFileOperationHandle(this);
else
throw new System.NotImplementedException();
@@ -216,7 +223,7 @@ namespace YooAsset
List<OperationHandleBase> tempers = new List<OperationHandleBase>(_handles);
foreach (var hande in tempers)
{
if (hande.IsValid)
if (hande.IsValidWithWarning)
{
hande.InvokeCallback();
}

View File

@@ -185,24 +185,24 @@ namespace YooAsset
/// 向网络端请求最新的资源版本
/// </summary>
/// <param name="timeout">超时时间默认值60秒</param>
public UpdateStaticVersionOperation UpdateStaticVersionAsync(int timeout = 60)
public UpdatePackageVersionOperation UpdatePackageVersionAsync(int timeout = 60)
{
DebugCheckInitialize();
if (_playMode == EPlayMode.EditorSimulateMode)
{
var operation = new EditorPlayModeUpdateStaticVersionOperation();
var operation = new EditorPlayModeUpdatePackageVersionOperation();
OperationSystem.StartOperation(operation);
return operation;
}
else if (_playMode == EPlayMode.OfflinePlayMode)
{
var operation = new OfflinePlayModeUpdateStaticVersionOperation();
var operation = new OfflinePlayModeUpdatePackageVersionOperation();
OperationSystem.StartOperation(operation);
return operation;
}
else if (_playMode == EPlayMode.HostPlayMode)
{
return _hostPlayModeImpl.UpdateStaticVersionAsync(PackageName, timeout);
return _hostPlayModeImpl.UpdatePackageVersionAsync(PackageName, timeout);
}
else
{
@@ -215,25 +215,25 @@ namespace YooAsset
/// </summary>
/// <param name="packageVersion">更新的包裹版本</param>
/// <param name="timeout">超时时间默认值60秒</param>
public UpdateManifestOperation UpdateManifestAsync(string packageVersion, int timeout = 60)
public UpdatePackageManifestOperation UpdatePackageManifestAsync(string packageVersion, int timeout = 60)
{
DebugCheckInitialize();
DebugCheckUpdateManifest();
if (_playMode == EPlayMode.EditorSimulateMode)
{
var operation = new EditorPlayModeUpdateManifestOperation();
var operation = new EditorPlayModeUpdatePackageManifestOperation();
OperationSystem.StartOperation(operation);
return operation;
}
else if (_playMode == EPlayMode.OfflinePlayMode)
{
var operation = new OfflinePlayModeUpdateManifestOperation();
var operation = new OfflinePlayModeUpdatePackageManifestOperation();
OperationSystem.StartOperation(operation);
return operation;
}
else if (_playMode == EPlayMode.HostPlayMode)
{
return _hostPlayModeImpl.UpdatePatchManifestAsync(PackageName, packageVersion, timeout);
return _hostPlayModeImpl.UpdatePackageManifestAsync(PackageName, packageVersion, timeout);
}
else
{
@@ -270,7 +270,18 @@ namespace YooAsset
}
/// <summary>
/// 获取包裹的版本信息
/// 清理本地包裹未使用的缓存文件
/// </summary>
public ClearPackageUnusedCacheFilesOperation ClearPackageUnusedCacheFilesAsync()
{
DebugCheckInitialize();
var operation = new ClearPackageUnusedCacheFilesOperation(this);
OperationSystem.StartOperation(operation);
return operation;
}
/// <summary>
/// 获取本地包裹的版本信息
/// </summary>
public string GetPackageVersion()
{
@@ -401,74 +412,63 @@ namespace YooAsset
#region
/// <summary>
/// 异步获取原生文件
/// 同步加载原生文件
/// </summary>
/// <param name="location">资源的定位地址</param>
/// <param name="copyPath">拷贝路径</param>
public RawFileOperation GetRawFileAsync(string location, string copyPath = null)
/// <param name="assetInfo">资源信息</param>
public RawFileOperationHandle LoadRawFileSync(AssetInfo assetInfo)
{
DebugCheckInitialize();
AssetInfo assetInfo = ConvertLocationToAssetInfo(location, null);
return GetRawFileInternal(assetInfo, copyPath);
return LoadRawFileInternal(assetInfo, true);
}
/// <summary>
/// 异步获取原生文件
/// 同步加载原生文件
/// </summary>
/// <param name="assetInfo">资源信息</param>
/// <param name="copyPath">拷贝路径</param>
public RawFileOperation GetRawFileAsync(AssetInfo assetInfo, string copyPath = null)
/// <param name="location">资源的定位地址</param>
public RawFileOperationHandle LoadRawFileSync(string location)
{
DebugCheckInitialize();
return GetRawFileInternal(assetInfo, copyPath);
AssetInfo assetInfo = ConvertLocationToAssetInfo(location, null);
return LoadRawFileInternal(assetInfo, true);
}
/// <summary>
/// 异步加载原生文件
/// </summary>
/// <param name="assetInfo">资源信息</param>
public RawFileOperationHandle LoadRawFileAsync(AssetInfo assetInfo)
{
DebugCheckInitialize();
return LoadRawFileInternal(assetInfo, false);
}
/// <summary>
/// 异步加载原生文件
/// </summary>
/// <param name="location">资源的定位地址</param>
public RawFileOperationHandle LoadRawFileAsync(string location)
{
DebugCheckInitialize();
AssetInfo assetInfo = ConvertLocationToAssetInfo(location, null);
return LoadRawFileInternal(assetInfo, false);
}
private RawFileOperation GetRawFileInternal(AssetInfo assetInfo, string copyPath)
private RawFileOperationHandle LoadRawFileInternal(AssetInfo assetInfo, bool waitForAsyncComplete)
{
if (assetInfo.IsInvalid)
{
YooLogger.Error($"Failed to get raw file. {assetInfo.Error}");
RawFileOperation operation = new CompletedRawFileOperation(assetInfo.Error, copyPath);
OperationSystem.StartOperation(operation);
return operation;
}
BundleInfo bundleInfo = _bundleServices.GetBundleInfo(assetInfo);
#if UNITY_EDITOR
if (bundleInfo.Bundle.IsRawFile == false)
if (assetInfo.IsInvalid == false)
{
string error = $"Cannot load asset bundle file using {nameof(GetRawFileAsync)} method !";
YooLogger.Error(error);
RawFileOperation operation = new CompletedRawFileOperation(error, copyPath);
OperationSystem.StartOperation(operation);
return operation;
BundleInfo bundleInfo = _bundleServices.GetBundleInfo(assetInfo);
if (bundleInfo.Bundle.IsRawFile == false)
throw new Exception($"Cannot load asset bundle file using {nameof(LoadRawFileAsync)} method !");
}
#endif
if (_playMode == EPlayMode.EditorSimulateMode)
{
RawFileOperation operation = new EditorPlayModeRawFileOperation(bundleInfo, copyPath);
OperationSystem.StartOperation(operation);
return operation;
}
else if (_playMode == EPlayMode.OfflinePlayMode)
{
RawFileOperation operation = new OfflinePlayModeRawFileOperation(bundleInfo, copyPath);
OperationSystem.StartOperation(operation);
return operation;
}
else if (_playMode == EPlayMode.HostPlayMode)
{
RawFileOperation operation = new HostPlayModeRawFileOperation(bundleInfo, copyPath);
OperationSystem.StartOperation(operation);
return operation;
}
else
{
throw new NotImplementedException();
}
var handle = _assetSystemImpl.LoadRawFileAsync(assetInfo);
if (waitForAsyncComplete)
handle.WaitForAsyncComplete();
return handle;
}
#endregion
@@ -581,13 +581,7 @@ namespace YooAsset
{
BundleInfo bundleInfo = _bundleServices.GetBundleInfo(assetInfo);
if (bundleInfo.Bundle.IsRawFile)
{
string error = $"Cannot load raw file using LoadAsset method !";
YooLogger.Error(error);
CompletedProvider completedProvider = new CompletedProvider(assetInfo);
completedProvider.SetCompleted(error);
return completedProvider.CreateHandle<AssetOperationHandle>();
}
throw new Exception($"Cannot load raw file using {nameof(LoadAssetAsync)} method !");
}
#endif
@@ -676,13 +670,7 @@ namespace YooAsset
{
BundleInfo bundleInfo = _bundleServices.GetBundleInfo(assetInfo);
if (bundleInfo.Bundle.IsRawFile)
{
string error = $"Cannot load raw file using LoadSubAssets method !";
YooLogger.Error(error);
CompletedProvider completedProvider = new CompletedProvider(assetInfo);
completedProvider.SetCompleted(error);
return completedProvider.CreateHandle<SubAssetsOperationHandle>();
}
throw new Exception($"Cannot load raw file using {nameof(LoadSubAssetsAsync)} method !");
}
#endif
@@ -899,24 +887,24 @@ namespace YooAsset
/// </summary>
/// <param name="packageVersion">指定更新的包裹版本</param>
/// <param name="timeout">超时时间</param>
public UpdatePackageOperation UpdatePackageAsync(string packageVersion, int timeout = 60)
public DownloadPackageOperation DownloadPackageAsync(string packageVersion, int timeout = 60)
{
DebugCheckInitialize();
if (_playMode == EPlayMode.EditorSimulateMode)
{
var operation = new EditorPlayModeUpdatePackageOperation();
var operation = new EditorPlayModeDownloadPackageOperation();
OperationSystem.StartOperation(operation);
return operation;
}
else if (_playMode == EPlayMode.OfflinePlayMode)
{
var operation = new OfflinePlayModeUpdatePackageOperation();
var operation = new OfflinePlayModeDownloadPackageOperation();
OperationSystem.StartOperation(operation);
return operation;
}
else if (_playMode == EPlayMode.HostPlayMode)
{
return _hostPlayModeImpl.UpdatePackageAsync(PackageName, packageVersion, timeout);
return _hostPlayModeImpl.DownloadPackageAsync(PackageName, packageVersion, timeout);
}
else
{
@@ -972,7 +960,7 @@ namespace YooAsset
var loadedBundleInfos = _assetSystemImpl.GetLoadedBundleInfos();
if (loadedBundleInfos.Count > 0)
{
YooLogger.Warning($"Found loaded bundle before update manifest ! Recommended to call the {nameof(ForceUnloadAllAssets)} method to release loaded bundle !");
YooLogger.Error($"Found loaded bundle before update manifest ! Recommended to call the {nameof(ForceUnloadAllAssets)} method to release loaded bundle !");
}
}
#endregion

View File

@@ -2,7 +2,6 @@
using System.IO;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace YooAsset
{
@@ -30,8 +29,8 @@ namespace YooAsset
/// </summary>
public static bool IsCached(PatchBundle patchBundle)
{
string fileHash = patchBundle.FileHash;
if (_cachedDic.ContainsKey(fileHash))
string cacheKey = patchBundle.CacheKey;
if (_cachedDic.ContainsKey(cacheKey))
{
string filePath = patchBundle.CachedFilePath;
if (File.Exists(filePath))
@@ -40,7 +39,7 @@ namespace YooAsset
}
else
{
_cachedDic.Remove(fileHash);
_cachedDic.Remove(cacheKey);
YooLogger.Error($"Cache file is missing : {filePath}");
return false;
}
@@ -56,12 +55,12 @@ namespace YooAsset
/// </summary>
public static void CacheBundle(PatchBundle patchBundle)
{
string fileHash = patchBundle.FileHash;
if (_cachedDic.ContainsKey(fileHash) == false)
string cacheKey = patchBundle.CacheKey;
if (_cachedDic.ContainsKey(cacheKey) == false)
{
string filePath = patchBundle.CachedFilePath;
YooLogger.Log($"Cache verify file : {filePath}");
_cachedDic.Add(fileHash, patchBundle);
_cachedDic.Add(cacheKey, patchBundle);
}
}

View File

@@ -25,7 +25,7 @@ namespace YooAsset
/// <summary>
/// 加载状态
/// </summary>
public int Status;
public string Status;
public int CompareTo(DebugBundleInfo other)
{

View File

@@ -40,7 +40,7 @@ namespace YooAsset
/// <summary>
/// 加载状态
/// </summary>
public int Status;
public string Status;
/// <summary>
/// 依赖的资源包列表

View File

@@ -5,9 +5,9 @@ using System.IO;
namespace YooAsset
{
/// <summary>
/// 清理未使用的缓存资源操作类
/// 清理本地包裹未使用的缓存文件
/// </summary>
public sealed class ClearUnusedCacheFilesOperation : AsyncOperationBase
public sealed class ClearPackageUnusedCacheFilesOperation : AsyncOperationBase
{
private enum ESteps
{
@@ -17,14 +17,14 @@ namespace YooAsset
Done,
}
private readonly List<AssetsPackage> _packages;
private readonly AssetsPackage _package;
private ESteps _steps = ESteps.None;
private List<string> _unusedCacheFilePaths;
private int _unusedFileTotalCount = 0;
internal ClearUnusedCacheFilesOperation(List<AssetsPackage> packages)
internal ClearPackageUnusedCacheFilesOperation(AssetsPackage package)
{
_packages = packages;
_package = package;
}
internal override void Start()
{
@@ -84,27 +84,19 @@ namespace YooAsset
/// </summary>
private List<string> GetUnusedCacheFilePaths()
{
string cacheFolderPath = PersistentHelper.GetCacheFolderPath();
string cacheFolderPath = PersistentHelper.GetCacheFolderPath(_package.PackageName);
if (Directory.Exists(cacheFolderPath) == false)
return new List<string>();
// 获取所有缓存文件
DirectoryInfo directoryInfo = new DirectoryInfo(cacheFolderPath);
FileInfo[] fileInfos = directoryInfo.GetFiles();
List<string> result = new List<string>(fileInfos.Length);
foreach (FileInfo fileInfo in fileInfos)
{
bool used = false;
foreach (var package in _packages)
if (_package.IsIncludeBundleFile(fileInfo.Name) == false)
{
if (package.IsIncludeBundleFile(fileInfo.Name))
{
used = true;
break;
}
}
if (used == false)
result.Add(fileInfo.FullName);
}
}
return result;
}

View File

@@ -5,7 +5,7 @@ using System.IO;
namespace YooAsset
{
public abstract class UpdatePackageOperation : AsyncOperationBase
public abstract class DownloadPackageOperation : AsyncOperationBase
{
/// <summary>
/// 创建包裹下载器
@@ -19,7 +19,7 @@ namespace YooAsset
/// <summary>
/// 编辑器下模拟运行的更新资源包裹操作
/// </summary>
internal sealed class EditorPlayModeUpdatePackageOperation : UpdatePackageOperation
internal sealed class EditorPlayModeDownloadPackageOperation : DownloadPackageOperation
{
internal override void Start()
{
@@ -43,7 +43,7 @@ namespace YooAsset
/// <summary>
/// 离线模式的更新资源包裹操作
/// </summary>
internal sealed class OfflinePlayModeUpdatePackageOperation : UpdatePackageOperation
internal sealed class OfflinePlayModeDownloadPackageOperation : DownloadPackageOperation
{
internal override void Start()
{
@@ -67,7 +67,7 @@ namespace YooAsset
/// <summary>
/// 联机模式的更新资源包裹操作
/// </summary>
internal sealed class HostPlayModeUpdatePackageOperation : UpdatePackageOperation
internal sealed class HostPlayModeDownloadPackageOperation : DownloadPackageOperation
{
private enum ESteps
{
@@ -86,7 +86,7 @@ namespace YooAsset
private UnityWebDataRequester _downloader;
private PatchManifest _remotePatchManifest;
internal HostPlayModeUpdatePackageOperation(HostPlayModeImpl impl, string packageName, string packageVersion, int timeout)
internal HostPlayModeDownloadPackageOperation(HostPlayModeImpl impl, string packageName, string packageVersion, int timeout)
{
_impl = impl;
_packageName = packageName;
@@ -153,13 +153,14 @@ namespace YooAsset
{
if (Status == EOperationStatus.Succeed)
{
YooLogger.Log($"Create package downloader : {_remotePatchManifest.PackageName} {_remotePatchManifest.PackageVersion}");
List<BundleInfo> downloadList = GetDownloadList();
var operation = new PackageDownloaderOperation(downloadList, downloadingMaxNumber, failedTryAgain, timeout);
return operation;
}
else
{
YooLogger.Error($"{nameof(UpdatePackageOperation)} status is failed !");
YooLogger.Error($"{nameof(DownloadPackageOperation)} status is failed !");
var operation = new PackageDownloaderOperation(null, downloadingMaxNumber, failedTryAgain, timeout);
return operation;
}

View File

@@ -226,6 +226,19 @@ namespace YooAsset
{
_isPause = false;
}
/// <summary>
/// 取消下载
/// </summary>
public void CancelDownload()
{
if (_steps != ESteps.Done)
{
_steps = ESteps.Done;
Status = EOperationStatus.Failed;
Error = "User cancel.";
}
}
}
public sealed class PackageDownloaderOperation : DownloaderOperation

View File

@@ -6,9 +6,9 @@ using System.IO;
namespace YooAsset
{
/// <summary>
/// 更新清单操作
/// 向远端请求并更新补丁清单
/// </summary>
public abstract class UpdateManifestOperation : AsyncOperationBase
public abstract class UpdatePackageManifestOperation : AsyncOperationBase
{
/// <summary>
/// 是否发现了新的补丁清单
@@ -19,7 +19,7 @@ namespace YooAsset
/// <summary>
/// 编辑器下模拟运行的更新清单操作
/// </summary>
internal sealed class EditorPlayModeUpdateManifestOperation : UpdateManifestOperation
internal sealed class EditorPlayModeUpdatePackageManifestOperation : UpdatePackageManifestOperation
{
internal override void Start()
{
@@ -33,7 +33,7 @@ namespace YooAsset
/// <summary>
/// 离线模式的更新清单操作
/// </summary>
internal sealed class OfflinePlayModeUpdateManifestOperation : UpdateManifestOperation
internal sealed class OfflinePlayModeUpdatePackageManifestOperation : UpdatePackageManifestOperation
{
internal override void Start()
{
@@ -48,7 +48,7 @@ namespace YooAsset
/// 联机模式的更新清单操作
/// 注意:优先比对沙盒清单哈希值,如果有变化就更新远端清单文件,并保存到本地。
/// </summary>
internal sealed class HostPlayModeUpdateManifestOperation : UpdateManifestOperation
internal sealed class HostPlayModeUpdatePackageManifestOperation : UpdatePackageManifestOperation
{
private enum ESteps
{
@@ -77,7 +77,7 @@ namespace YooAsset
private ESteps _steps = ESteps.None;
private float _verifyTime;
internal HostPlayModeUpdateManifestOperation(HostPlayModeImpl impl, string packageName, string packageVersion, int timeout)
internal HostPlayModeUpdatePackageManifestOperation(HostPlayModeImpl impl, string packageName, string packageVersion, int timeout)
{
_impl = impl;
_packageName = packageName;

View File

@@ -5,9 +5,9 @@ using UnityEngine;
namespace YooAsset
{
/// <summary>
/// 获取包裹的最新版本
/// 请求远端包裹的最新版本
/// </summary>
public abstract class UpdateStaticVersionOperation : AsyncOperationBase
public abstract class UpdatePackageVersionOperation : AsyncOperationBase
{
/// <summary>
/// 当前最新的包裹版本
@@ -16,9 +16,9 @@ namespace YooAsset
}
/// <summary>
/// 编辑器下模拟运行的获取包裹的最新版本操作
/// 编辑器下模拟模式的请求远端包裹的最新版本
/// </summary>
internal sealed class EditorPlayModeUpdateStaticVersionOperation : UpdateStaticVersionOperation
internal sealed class EditorPlayModeUpdatePackageVersionOperation : UpdatePackageVersionOperation
{
internal override void Start()
{
@@ -30,9 +30,9 @@ namespace YooAsset
}
/// <summary>
/// 离线模式的获取包裹的最新版本操作
/// 离线模式的请求远端包裹的最新版本
/// </summary>
internal sealed class OfflinePlayModeUpdateStaticVersionOperation : UpdateStaticVersionOperation
internal sealed class OfflinePlayModeUpdatePackageVersionOperation : UpdatePackageVersionOperation
{
internal override void Start()
{
@@ -44,9 +44,9 @@ namespace YooAsset
}
/// <summary>
/// 联机模式的获取包裹的最新版本操作
/// 联机模式的请求远端包裹的最新版本
/// </summary>
internal sealed class HostPlayModeUpdateStaticVersionOperation : UpdateStaticVersionOperation
internal sealed class HostPlayModeUpdatePackageVersionOperation : UpdatePackageVersionOperation
{
private enum ESteps
{
@@ -63,7 +63,7 @@ namespace YooAsset
private ESteps _steps = ESteps.None;
private UnityWebDataRequester _downloader;
internal HostPlayModeUpdateStaticVersionOperation(HostPlayModeImpl impl, string packageName, int timeout)
internal HostPlayModeUpdatePackageVersionOperation(HostPlayModeImpl impl, string packageName, int timeout)
{
_impl = impl;
_packageName = packageName;

View File

@@ -41,10 +41,11 @@ namespace YooAsset
/// </summary>
public string[] Tags;
/// <summary>
/// 文件名称
/// </summary>
public string FileName { private set; get; }
/// 所属的包裹名称
/// </summary>
private string _packageName;
/// <summary>
/// 缓存文件路径
@@ -57,7 +58,7 @@ namespace YooAsset
if (string.IsNullOrEmpty(_cachedFilePath) == false)
return _cachedFilePath;
string cacheRoot = PersistentHelper.GetCacheFolderPath();
string cacheRoot = PersistentHelper.GetCacheFolderPath(_packageName);
_cachedFilePath = $"{cacheRoot}/{FileName}";
return _cachedFilePath;
}
@@ -79,6 +80,34 @@ namespace YooAsset
}
}
/// <summary>
/// 文件名称
/// </summary>
private string _fileName;
public string FileName
{
get
{
if (string.IsNullOrEmpty(_fileName))
throw new Exception("Should never get here !");
return _fileName;
}
}
/// <summary>
/// 缓存查询Key
/// </summary>
private string _cacheKey;
public string CacheKey
{
get
{
if (string.IsNullOrEmpty(_cacheKey))
throw new Exception("Should never get here !");
return _cacheKey;
}
}
public PatchBundle(string bundleName, string fileHash, string fileCRC, long fileSize, bool isRawFile, byte loadMethod, string[] tags)
{
@@ -92,11 +121,13 @@ namespace YooAsset
}
/// <summary>
/// 解析文件名称
/// 解析资源包
/// </summary>
public void ParseFileName(int nameStype)
public void ParseBundle(string packageName, int nameStype)
{
FileName = PatchManifest.CreateBundleFileName(nameStype, BundleName, FileHash);
_packageName = packageName;
_cacheKey = $"{packageName}-{FileHash}";
_fileName = PatchManifest.CreateBundleFileName(nameStype, BundleName, FileHash);
}
/// <summary>

View File

@@ -290,7 +290,7 @@ namespace YooAsset
// BundleList
foreach (var patchBundle in patchManifest.BundleList)
{
patchBundle.ParseFileName(patchManifest.OutputNameStyle);
patchBundle.ParseBundle(patchManifest.PackageName, patchManifest.OutputNameStyle);
patchManifest.BundleDic.Add(patchBundle.BundleName, patchBundle);
}

View File

@@ -44,9 +44,9 @@ namespace YooAsset
/// <summary>
/// 异步更新资源版本号
/// </summary>
public UpdateStaticVersionOperation UpdateStaticVersionAsync(string packageName, int timeout)
public UpdatePackageVersionOperation UpdatePackageVersionAsync(string packageName, int timeout)
{
var operation = new HostPlayModeUpdateStaticVersionOperation(this, packageName, timeout);
var operation = new HostPlayModeUpdatePackageVersionOperation(this, packageName, timeout);
OperationSystem.StartOperation(operation);
return operation;
}
@@ -54,9 +54,9 @@ namespace YooAsset
/// <summary>
/// 异步更新补丁清单
/// </summary>
public UpdateManifestOperation UpdatePatchManifestAsync(string packageName, string packageVersion, int timeout)
public UpdatePackageManifestOperation UpdatePackageManifestAsync(string packageName, string packageVersion, int timeout)
{
var operation = new HostPlayModeUpdateManifestOperation(this, packageName, packageVersion, timeout);
var operation = new HostPlayModeUpdatePackageManifestOperation(this, packageName, packageVersion, timeout);
OperationSystem.StartOperation(operation);
return operation;
}
@@ -74,9 +74,9 @@ namespace YooAsset
/// <summary>
/// 异步更新资源包裹
/// </summary>
public UpdatePackageOperation UpdatePackageAsync(string packageName, string packageVersion, int timeout)
public DownloadPackageOperation DownloadPackageAsync(string packageName, string packageVersion, int timeout)
{
var operation = new HostPlayModeUpdatePackageOperation(this, packageName, packageVersion, timeout);
var operation = new HostPlayModeDownloadPackageOperation(this, packageName, packageVersion, timeout);
OperationSystem.StartOperation(operation);
return operation;
}
@@ -86,6 +86,7 @@ namespace YooAsset
/// </summary>
public PatchDownloaderOperation CreatePatchDownloaderByAll(int fileLoadingMaxNumber, int failedTryAgain, int timeout)
{
YooLogger.Log($"Create patch downloader : {LocalPatchManifest.PackageName} {LocalPatchManifest.PackageVersion}");
List<BundleInfo> downloadList = GetDownloadListByAll();
var operation = new PatchDownloaderOperation(downloadList, fileLoadingMaxNumber, failedTryAgain, timeout);
return operation;
@@ -114,6 +115,7 @@ namespace YooAsset
/// </summary>
public PatchDownloaderOperation CreatePatchDownloaderByTags(string[] tags, int fileLoadingMaxNumber, int failedTryAgain, int timeout)
{
YooLogger.Log($"Create patch downloader : {LocalPatchManifest.PackageName} {LocalPatchManifest.PackageVersion}");
List<BundleInfo> downloadList = GetDownloadListByTags(tags);
var operation = new PatchDownloaderOperation(downloadList, fileLoadingMaxNumber, failedTryAgain, timeout);
return operation;
@@ -154,6 +156,7 @@ namespace YooAsset
/// </summary>
public PatchDownloaderOperation CreatePatchDownloaderByPaths(AssetInfo[] assetInfos, int fileLoadingMaxNumber, int failedTryAgain, int timeout)
{
YooLogger.Log($"Create patch downloader : {LocalPatchManifest.PackageName} {LocalPatchManifest.PackageVersion}");
List<BundleInfo> downloadList = GetDownloadListByPaths(assetInfos);
var operation = new PatchDownloaderOperation(downloadList, fileLoadingMaxNumber, failedTryAgain, timeout);
return operation;
@@ -206,6 +209,7 @@ namespace YooAsset
/// </summary>
public PatchUnpackerOperation CreatePatchUnpackerByTags(string[] tags, int fileUpackingMaxNumber, int failedTryAgain, int timeout)
{
YooLogger.Log($"Create patch unpacker : {LocalPatchManifest.PackageName} {LocalPatchManifest.PackageVersion}");
List<BundleInfo> unpcakList = GetUnpackListByTags(tags);
var operation = new PatchUnpackerOperation(unpcakList, fileUpackingMaxNumber, failedTryAgain, timeout);
return operation;
@@ -237,6 +241,7 @@ namespace YooAsset
/// </summary>
public PatchUnpackerOperation CreatePatchUnpackerByAll(int fileUpackingMaxNumber, int failedTryAgain, int timeout)
{
YooLogger.Log($"Create patch unpacker : {LocalPatchManifest.PackageName} {LocalPatchManifest.PackageVersion}");
List<BundleInfo> unpcakList = GetUnpackListByAll();
var operation = new PatchUnpackerOperation(unpcakList, fileUpackingMaxNumber, failedTryAgain, timeout);
return operation;

View File

@@ -97,17 +97,18 @@ namespace YooAsset
/// </summary>
public static void DeleteCacheFolder()
{
string directoryPath = GetCacheFolderPath();
if (Directory.Exists(directoryPath))
Directory.Delete(directoryPath, true);
string root = PathHelper.MakePersistentLoadPath(CacheFolderName);
if (Directory.Exists(root))
Directory.Delete(root, true);
}
/// <summary>
/// 获取缓存文件夹路径
/// </summary>
public static string GetCacheFolderPath()
public static string GetCacheFolderPath(string packageName)
{
return PathHelper.MakePersistentLoadPath(CacheFolderName);
string root = PathHelper.MakePersistentLoadPath(CacheFolderName);
return $"{root}/{packageName}";
}
#region

View File

@@ -9,6 +9,7 @@ namespace YooAsset
public static partial class YooAssets
{
private static bool _isInitialize = false;
private static GameObject _driver = null;
private static readonly List<AssetsPackage> _packages = new List<AssetsPackage>();
/// <summary>
@@ -23,13 +24,14 @@ namespace YooAsset
{
// 创建驱动器
_isInitialize = true;
UnityEngine.GameObject driverGo = new UnityEngine.GameObject($"[{nameof(YooAssets)}]");
driverGo.AddComponent<YooAssetsDriver>();
UnityEngine.Object.DontDestroyOnLoad(driverGo);
_driver = new UnityEngine.GameObject($"[{nameof(YooAssets)}]");
_driver.AddComponent<YooAssetsDriver>();
UnityEngine.Object.DontDestroyOnLoad(_driver);
YooLogger.Log($"{nameof(YooAssets)} initialize !");
#if DEBUG
// 添加远程调试脚本
driverGo.AddComponent<RemoteDebuggerInRuntime>();
_driver.AddComponent<RemoteDebuggerInRuntime>();
#endif
// 初始化异步系统
@@ -37,27 +39,10 @@ namespace YooAsset
}
}
/// <summary>
/// 更新资源系统
/// </summary>
internal static void Update()
{
if (_isInitialize)
{
OperationSystem.Update();
DownloadSystem.Update();
foreach (var package in _packages)
{
package.UpdatePackage();
}
}
}
/// <summary>
/// 销毁资源系统
/// </summary>
internal static void Destroy()
public static void Destroy()
{
if (_isInitialize)
{
@@ -72,7 +57,26 @@ namespace YooAsset
_packages.Clear();
_isInitialize = false;
YooLogger.Log("YooAssets destroy all !");
if (_driver != null)
GameObject.Destroy(_driver);
YooLogger.Log($"{nameof(YooAssets)} destroy all !");
}
}
/// <summary>
/// 更新资源系统
/// </summary>
internal static void Update()
{
if (_isInitialize)
{
OperationSystem.Update();
DownloadSystem.Update();
for (int i = 0; i < _packages.Count; i++)
{
_packages[i].UpdatePackage();
}
}
}
@@ -193,16 +197,6 @@ namespace YooAsset
#endregion
#region
/// <summary>
/// 清理未使用的缓存文件
/// </summary>
public static ClearUnusedCacheFilesOperation ClearUnusedCacheFiles()
{
ClearUnusedCacheFilesOperation operation = new ClearUnusedCacheFilesOperation(_packages);
OperationSystem.StartOperation(operation);
return operation;
}
/// <summary>
/// 获取内置文件夹名称
/// </summary>

View File

@@ -12,14 +12,6 @@ namespace YooAsset
DebugCheckDuplicateDriver();
YooAssets.Update();
}
void OnDestroy()
{
YooAssets.Destroy();
}
void OnApplicationQuit()
{
YooAssets.Destroy();
}
[Conditional("DEBUG")]
private void DebugCheckDuplicateDriver()

View File

@@ -82,25 +82,43 @@ namespace YooAsset
#region
/// <summary>
/// 异步获取原生文件
/// 同步加载原生文件
/// </summary>
/// <param name="location">资源的定位地址</param>
/// <param name="copyPath">拷贝路径</param>
public static RawFileOperation GetRawFileAsync(string location, string copyPath = null)
/// <param name="assetInfo">资源信息</param>
public static RawFileOperationHandle LoadRawFileSync(AssetInfo assetInfo)
{
DebugCheckDefaultPackageValid();
return _defaultPackage.GetRawFileAsync(location, copyPath);
return _defaultPackage.LoadRawFileSync(assetInfo);
}
/// <summary>
/// 异步获取原生文件
/// 同步加载原生文件
/// </summary>
/// <param name="assetInfo">资源信息</param>
/// <param name="copyPath">拷贝路径</param>
public static RawFileOperation GetRawFileAsync(AssetInfo assetInfo, string copyPath = null)
/// <param name="location">资源的定位地址</param>
public static RawFileOperationHandle LoadRawFileSync(string location)
{
DebugCheckDefaultPackageValid();
return _defaultPackage.GetRawFileAsync(assetInfo, copyPath);
return _defaultPackage.LoadRawFileSync(location);
}
/// <summary>
/// 异步加载原生文件
/// </summary>
/// <param name="assetInfo">资源信息</param>
public static RawFileOperationHandle LoadRawFileAsync(AssetInfo assetInfo)
{
DebugCheckDefaultPackageValid();
return _defaultPackage.LoadRawFileAsync(assetInfo);
}
/// <summary>
/// 异步加载原生文件
/// </summary>
/// <param name="location">资源的定位地址</param>
public static RawFileOperationHandle LoadRawFileAsync(string location)
{
DebugCheckDefaultPackageValid();
return _defaultPackage.LoadRawFileAsync(location);
}
#endregion
@@ -367,14 +385,14 @@ namespace YooAsset
#region
/// <summary>
/// 创建资源包裹下载器,用于下载更新指定资源版本所有的资源包文件
/// 资源包裹更新,用于下载更新指定资源版本所有的资源包文件
/// </summary>
/// <param name="packageVersion">指定更新的包裹版本</param>
/// <param name="timeout">超时时间</param>
public static UpdatePackageOperation UpdatePackageAsync(string packageVersion, int timeout = 60)
public static DownloadPackageOperation DownloadPackageAsync(string packageVersion, int timeout = 60)
{
DebugCheckDefaultPackageValid();
return _defaultPackage.UpdatePackageAsync(packageVersion, timeout);
return _defaultPackage.DownloadPackageAsync(packageVersion, timeout);
}
#endregion

View File

@@ -1,692 +0,0 @@
fileFormatVersion: 2
guid: 67fa0069e75d5734fbeb60b68392703b
ModelImporter:
serializedVersion: 20200
internalIDToNameTable:
- first:
1: 100000
second: Chest
- first:
1: 100002
second: COB_CTRL
- first:
1: 100004
second: Foot_Left
- first:
1: 100006
second: Foot_Right
- first:
1: 100008
second: //RootNode
- first:
1: 100010
second: Footman_Mesh
- first:
1: 100012
second: Hand_Left
- first:
1: 100014
second: Hand_Right
- first:
1: 100016
second: Head
- first:
1: 100018
second: Hips
- first:
1: 100020
second: Index_Intermediate_Left
- first:
1: 100022
second: Index_Intermediate_Right
- first:
1: 100024
second: Index_Proximal_Left
- first:
1: 100026
second: Index_Proximal_Right
- first:
1: 100028
second: J_Tip
- first:
1: 100030
second: Jaw
- first:
1: 100032
second: LowerArm_Left
- first:
1: 100034
second: LowerArm_Right
- first:
1: 100036
second: LowerLeg_Left
- first:
1: 100038
second: LowerLeg_Right
- first:
1: 100040
second: Neck
- first:
1: 100042
second: RestOfFingers_Intermediate_Left
- first:
1: 100044
second: RestOfFingers_Intermediate_Right
- first:
1: 100046
second: RestOfFingers_Proximal_Left
- first:
1: 100048
second: RestOfFingers_Proximal_Right
- first:
1: 100050
second: Shield
- first:
1: 100052
second: Shoulder_Left
- first:
1: 100054
second: Shoulder_Right
- first:
1: 100056
second: Spine
- first:
1: 100058
second: Sword
- first:
1: 100060
second: Thumb_Intermediate_Left
- first:
1: 100062
second: Thumb_Intermediate_Right
- first:
1: 100064
second: Thumb_Proximal_Left
- first:
1: 100066
second: Thumb_Proximal_Right
- first:
1: 100068
second: Toe_Left
- first:
1: 100070
second: Toe_Right
- first:
1: 100072
second: Toetip_Left
- first:
1: 100074
second: Toetip_Right
- first:
1: 100076
second: UpperArm_Left
- first:
1: 100078
second: UpperArm_Right
- first:
1: 100080
second: UpperLeg_Left
- first:
1: 100082
second: UpperLeg_Right
- first:
4: 400000
second: Chest
- first:
4: 400002
second: COB_CTRL
- first:
4: 400004
second: Foot_Left
- first:
4: 400006
second: Foot_Right
- first:
4: 400008
second: //RootNode
- first:
4: 400010
second: Footman_Mesh
- first:
4: 400012
second: Hand_Left
- first:
4: 400014
second: Hand_Right
- first:
4: 400016
second: Head
- first:
4: 400018
second: Hips
- first:
4: 400020
second: Index_Intermediate_Left
- first:
4: 400022
second: Index_Intermediate_Right
- first:
4: 400024
second: Index_Proximal_Left
- first:
4: 400026
second: Index_Proximal_Right
- first:
4: 400028
second: J_Tip
- first:
4: 400030
second: Jaw
- first:
4: 400032
second: LowerArm_Left
- first:
4: 400034
second: LowerArm_Right
- first:
4: 400036
second: LowerLeg_Left
- first:
4: 400038
second: LowerLeg_Right
- first:
4: 400040
second: Neck
- first:
4: 400042
second: RestOfFingers_Intermediate_Left
- first:
4: 400044
second: RestOfFingers_Intermediate_Right
- first:
4: 400046
second: RestOfFingers_Proximal_Left
- first:
4: 400048
second: RestOfFingers_Proximal_Right
- first:
4: 400050
second: Shield
- first:
4: 400052
second: Shoulder_Left
- first:
4: 400054
second: Shoulder_Right
- first:
4: 400056
second: Spine
- first:
4: 400058
second: Sword
- first:
4: 400060
second: Thumb_Intermediate_Left
- first:
4: 400062
second: Thumb_Intermediate_Right
- first:
4: 400064
second: Thumb_Proximal_Left
- first:
4: 400066
second: Thumb_Proximal_Right
- first:
4: 400068
second: Toe_Left
- first:
4: 400070
second: Toe_Right
- first:
4: 400072
second: Toetip_Left
- first:
4: 400074
second: Toetip_Right
- first:
4: 400076
second: UpperArm_Left
- first:
4: 400078
second: UpperArm_Right
- first:
4: 400080
second: UpperLeg_Left
- first:
4: 400082
second: UpperLeg_Right
- first:
43: 4300000
second: Footman_Mesh
- first:
74: 7400000
second: attack
- first:
95: 9500000
second: //RootNode
- first:
111: 11100000
second: //RootNode
- first:
137: 13700000
second: Footman_Mesh
externalObjects: {}
materials:
materialImportMode: 1
materialName: 0
materialSearch: 1
materialLocation: 0
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 3
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations:
- serializedVersion: 16
name: attack
takeName: Take 001
internalID: 0
firstFrame: 1
lastFrame: 28
wrapMode: 0
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 1
loopBlend: 0
loopBlendOrientation: 1
loopBlendPositionY: 1
loopBlendPositionXZ: 1
keepOriginalOrientation: 1
keepOriginalPositionY: 1
keepOriginalPositionXZ: 1
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events: []
transformMask:
- path:
weight: 1
- path: COB_CTRL
weight: 0
- path: Footman_Mesh
weight: 0
- path: Hips
weight: 1
- path: Hips/Shield
weight: 1
- path: Hips/Spine
weight: 1
- path: Hips/Spine/Chest
weight: 1
- path: Hips/Spine/Chest/Neck
weight: 1
- path: Hips/Spine/Chest/Neck/Head
weight: 1
- path: Hips/Spine/Chest/Neck/Head/Jaw
weight: 1
- path: Hips/Spine/Chest/Neck/Head/Jaw/J_Tip
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/Index_Proximal_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/Index_Proximal_Left/Index_Intermediate_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/RestOfFingers_Proximal_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/RestOfFingers_Proximal_Left/RestOfFingers_Intermediate_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/Thumb_Proximal_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/Thumb_Proximal_Left/Thumb_Intermediate_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/Index_Proximal_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/Index_Proximal_Right/Index_Intermediate_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/RestOfFingers_Proximal_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/RestOfFingers_Proximal_Right/RestOfFingers_Intermediate_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/Thumb_Proximal_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/Thumb_Proximal_Right/Thumb_Intermediate_Right
weight: 1
- path: Hips/Sword
weight: 1
- path: Hips/UpperLeg_Left
weight: 1
- path: Hips/UpperLeg_Left/LowerLeg_Left
weight: 1
- path: Hips/UpperLeg_Left/LowerLeg_Left/Foot_Left
weight: 1
- path: Hips/UpperLeg_Left/LowerLeg_Left/Foot_Left/Toe_Left
weight: 1
- path: Hips/UpperLeg_Left/LowerLeg_Left/Foot_Left/Toe_Left/Toetip_Left
weight: 1
- path: Hips/UpperLeg_Right
weight: 1
- path: Hips/UpperLeg_Right/LowerLeg_Right
weight: 1
- path: Hips/UpperLeg_Right/LowerLeg_Right/Foot_Right
weight: 1
- path: Hips/UpperLeg_Right/LowerLeg_Right/Foot_Right/Toe_Right
weight: 1
- path: Hips/UpperLeg_Right/LowerLeg_Right/Foot_Right/Toe_Right/Toetip_Right
weight: 1
maskType: 0
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
isReadable: 1
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importVisibility: 0
importBlendShapes: 1
importCameras: 0
importLights: 0
fileIdsGeneration: 1
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
meshOptimizationFlags: -1
indexFormat: 1
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 4
normalCalculationMode: 0
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human: []
skeleton:
- name: footman@attack01(Clone)
parentName:
position: {x: 0, y: 0, z: 0}
rotation: {x: 0, y: 0, z: 0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: Footman_Mesh
parentName: footman@attack01(Clone)
position: {x: -0, y: 0, z: 0}
rotation: {x: 0, y: -0, z: -0, w: 1}
scale: {x: 0.01, y: 0.01, z: 0.01}
- name: COB_CTRL
parentName: footman@attack01(Clone)
position: {x: 0.0042852233, y: 0.6601113, z: -0.1711083}
rotation: {x: 0.10958317, y: -0.19028346, z: -0.021378642, w: 0.9753598}
scale: {x: 0.01, y: 0.01, z: 0.01}
- name: Hips
parentName: footman@attack01(Clone)
position: {x: 0.0042852233, y: 0.7778554, z: 0.024665922}
rotation: {x: 0.119579025, y: 0.11957903, z: -0.69692236, w: 0.6969225}
scale: {x: 0.010000001, y: 0.009999999, z: 0.010000001}
- name: Spine
parentName: Hips
position: {x: -22.08183, y: 2.7610132e-30, z: 2.789185e-15}
rotation: {x: 0.000000007450581, y: -0.070730194, z: -0.000000078231096, w: 0.99749553}
scale: {x: 1.0000006, y: 1.0000004, z: 0.99999994}
- name: Chest
parentName: Spine
position: {x: -24.493395, y: 4.37078e-15, z: -6.5791713e-15}
rotation: {x: 0.000000019903341, y: -0.1926707, z: -0.00000003972174, w: 0.98126346}
scale: {x: 1.0000001, y: 1.0000002, z: 0.99999994}
- name: Neck
parentName: Chest
position: {x: -31.697706, y: 4.2682918e-15, z: 1.5827795e-14}
rotation: {x: -0.000000014372164, y: 0.14626887, z: -0.000000017028755, w: 0.9892449}
scale: {x: 1.0000008, y: 1.0000006, z: 1.0000001}
- name: Head
parentName: Neck
position: {x: -20.858675, y: 1.02066555e-14, z: 1.3950282e-15}
rotation: {x: -0.38232452, y: -0.000000014134563, z: 0.92402816, w: -0.00000005207485}
scale: {x: 1.0000002, y: 1, z: 0.99999976}
- name: Jaw
parentName: Head
position: {x: -19.492151, y: -4.0412776e-15, z: -4.4981513}
rotation: {x: -0.000000005806956, y: 0.0971892, z: 0.000000040794845, w: 0.99526596}
scale: {x: 1.000001, y: 1.0000006, z: 1.0000001}
- name: J_Tip
parentName: Jaw
position: {x: -9.274182, y: -1.2503675e-14, z: 8.099877}
rotation: {x: 0.29965067, y: -0.2996506, z: -0.64047605, w: 0.640476}
scale: {x: 0.99999994, y: 0.9999995, z: 1.0000008}
- name: Shoulder_Left
parentName: Chest
position: {x: -18.98868, y: -31.335035, z: -12.155753}
rotation: {x: -0.005294424, y: 0.090987876, z: 0.79941905, w: 0.59382015}
scale: {x: 1, y: 1.0000002, z: 0.99999994}
- name: UpperArm_Left
parentName: Shoulder_Left
position: {x: -14.901689, y: 2.842171e-14, z: 8.881784e-16}
rotation: {x: 0.026086485, y: -0.107761614, z: -0.1623719, w: 0.9804807}
scale: {x: 0.99999994, y: 0.99999964, z: 1.0000005}
- name: LowerArm_Left
parentName: UpperArm_Left
position: {x: -32.191196, y: 4.842915e-15, z: -2.9871985e-15}
rotation: {x: 0.00035523064, y: 0.064626634, z: 0.0047827335, w: 0.99789804}
scale: {x: 0.9999998, y: 0.99999976, z: 0.9999998}
- name: Hand_Left
parentName: LowerArm_Left
position: {x: -29.678864, y: -2.7758043e-29, z: 4.869975e-15}
rotation: {x: -0.0033530025, y: -0.08887861, z: -0.072212294, w: 0.9934157}
scale: {x: 1.0000004, y: 0.9999993, z: 0.9999999}
- name: RestOfFingers_Proximal_Left
parentName: Hand_Left
position: {x: -18.280243, y: -1.6586086e-14, z: -2.029683e-15}
rotation: {x: 0.0070363455, y: 0.038031247, z: 0.0719468, w: 0.9966583}
scale: {x: 0.99999964, y: 1.0000008, z: 1.0000001}
- name: RestOfFingers_Intermediate_Left
parentName: RestOfFingers_Proximal_Left
position: {x: -8.780147, y: 7.67957e-15, z: 3.7027159e-16}
rotation: {x: 0.000000007916243, y: 0.02967007, z: 0.00000003856258, w: 0.99955976}
scale: {x: 0.9999997, y: 1.0000001, z: 0.9999998}
- name: Index_Proximal_Left
parentName: Hand_Left
position: {x: -16.901342, y: 1.1929646e-13, z: 10.104264}
rotation: {x: 0.0067923637, y: 0.041410152, z: 0.07197031, w: 0.9965237}
scale: {x: 0.9999993, y: 1.0000011, z: 1.0000001}
- name: Index_Intermediate_Left
parentName: Index_Proximal_Left
position: {x: -9.911482, y: 1.4998595e-14, z: 3.154118e-15}
rotation: {x: 0.00000002142042, y: 0.026280932, z: -0.000000027008355, w: 0.9996546}
scale: {x: 1, y: 1.0000001, z: 1.0000001}
- name: Thumb_Proximal_Left
parentName: Hand_Left
position: {x: -7.0572023, y: -4.708794, z: 9.280683}
rotation: {x: -0.06620509, y: 0.3625553, z: 0.15769373, w: 0.91613495}
scale: {x: 0.99999994, y: 1.0000007, z: 0.9999999}
- name: Thumb_Intermediate_Left
parentName: Thumb_Proximal_Left
position: {x: -10.653726, y: 3.648137e-16, z: 8.5441255e-15}
rotation: {x: 0.030814871, y: -0.21547182, z: -0.13817634, w: 0.9661934}
scale: {x: 0.99999976, y: 1.0000004, z: 1.0000002}
- name: Shoulder_Right
parentName: Chest
position: {x: -18.98899, y: 31.335, z: -12.155691}
rotation: {x: 0.7994109, y: 0.59383136, z: 0.0052921963, w: -0.09098734}
scale: {x: 1.0000002, y: 0.9999999, z: 1.0000001}
- name: UpperArm_Right
parentName: Shoulder_Right
position: {x: 14.901961, y: 0.00046619424, z: 0.000079565914}
rotation: {x: 0.107756816, y: 0.026086226, z: -0.9804833, w: -0.16235957}
scale: {x: 1.0000002, y: 1, z: 1.0000007}
- name: LowerArm_Right
parentName: UpperArm_Right
position: {x: -32.191166, y: 4.4336893e-14, z: 3.536796e-15}
rotation: {x: -0.00035532357, y: -0.06462459, z: 0.0047840555, w: 0.99789816}
scale: {x: 1.0000012, y: 1, z: 1.000001}
- name: Hand_Right
parentName: LowerArm_Right
position: {x: -29.678719, y: 4.5461288e-14, z: -2.7325554e-15}
rotation: {x: 0.0033532493, y: 0.08887915, z: -0.07221696, w: 0.99341536}
scale: {x: 0.99999917, y: 1.0000001, z: 0.9999989}
- name: RestOfFingers_Proximal_Right
parentName: Hand_Right
position: {x: -18.280209, y: -3.645552e-14, z: 1.8098782e-15}
rotation: {x: -0.0070367483, y: -0.038032934, z: 0.07195137, w: 0.99665797}
scale: {x: 0.99999994, y: 1.0000011, z: 1.000001}
- name: RestOfFingers_Intermediate_Right
parentName: RestOfFingers_Proximal_Right
position: {x: -8.7804575, y: 1.3120176e-14, z: -2.045785e-15}
rotation: {x: -0.0000000018626449, y: -0.029668696, z: 0.000000023981553, w: 0.9995598}
scale: {x: 0.99999976, y: 1.0000007, z: 1.0000006}
- name: Index_Proximal_Right
parentName: Hand_Right
position: {x: -16.9013, y: -5.4614235e-14, z: -10.104266}
rotation: {x: -0.0067928056, y: -0.041411325, z: 0.07197488, w: 0.99652326}
scale: {x: 1.0000004, y: 1.0000013, z: 1.0000011}
- name: Index_Intermediate_Right
parentName: Index_Proximal_Right
position: {x: -9.911691, y: 2.0547315e-15, z: -2.2696136e-15}
rotation: {x: 0.0000000018626449, y: -0.026280075, z: -0.000000059051665, w: 0.9996546}
scale: {x: 0.9999998, y: 1.0000005, z: 1.0000007}
- name: Thumb_Proximal_Right
parentName: Hand_Right
position: {x: -7.0571103, y: -4.7085547, z: -9.280674}
rotation: {x: 0.06620055, y: -0.3625544, z: 0.15768987, w: 0.9161364}
scale: {x: 1.0000002, y: 1.0000013, z: 1.0000013}
- name: Thumb_Intermediate_Right
parentName: Thumb_Proximal_Right
position: {x: -10.653982, y: 2.4461068e-14, z: 1.7784693e-15}
rotation: {x: -0.03195776, y: 0.20743087, z: -0.1379023, w: 0.9679536}
scale: {x: 1.0000002, y: 1.0000001, z: 1.0000006}
- name: UpperLeg_Left
parentName: Hips
position: {x: 3.5068195, y: -19.94618, z: -1.3763187}
rotation: {x: -0.24868296, y: -0.015556604, z: 0.96813136, w: 0.025227567}
scale: {x: 1.0000002, y: 1.0000005, z: 1}
- name: LowerLeg_Left
parentName: UpperLeg_Left
position: {x: -32.81932, y: 2.1316282e-14, z: -8.881784e-15}
rotation: {x: -0.000059749553, y: -0.15989013, z: 0.025032664, w: 0.9868174}
scale: {x: 1.0000006, y: 1.0000004, z: 1.0000006}
- name: Foot_Left
parentName: LowerLeg_Left
position: {x: -37.066936, y: -1.4210855e-14, z: -4.440892e-15}
rotation: {x: 0.13149364, y: 0.6137423, z: -0.22415835, w: 0.74550855}
scale: {x: 1.0000005, y: 1, z: 1.0000004}
- name: Toe_Left
parentName: Foot_Left
position: {x: -12.738982, y: -0.5618247, z: 0.30802163}
rotation: {x: 0.44987908, y: 0.11339949, z: -0.10218815, w: 0.8799471}
scale: {x: 0.9999996, y: 0.9999996, z: 1.0000001}
- name: Toetip_Left
parentName: Toe_Left
position: {x: -17.954567, y: -0.038039967, z: 0.4538383}
rotation: {x: 0.04162463, y: 0.030676108, z: -0.003480352, w: 0.9986563}
scale: {x: 1.0000002, y: 1.0000002, z: 1.0000006}
- name: Shield
parentName: Hips
position: {x: -36.892387, y: -62.87267, z: 21.847818}
rotation: {x: 0.0000000074505797, y: -0.16911028, z: -0.00000008940696, w: 0.98559713}
scale: {x: 1.0000004, y: 1.0000006, z: 1}
- name: Sword
parentName: Hips
position: {x: -37.368732, y: 86.23419, z: 18.132149}
rotation: {x: 0.0000000074505797, y: -0.16911028, z: -0.00000008940696, w: 0.98559713}
scale: {x: 1.0000005, y: 1.0000005, z: 1.0000004}
- name: UpperLeg_Right
parentName: Hips
position: {x: 3.5067785, y: 19.9462, z: -1.3763317}
rotation: {x: -0.025228024, y: 0.9681315, z: -0.015552506, w: 0.24868283}
scale: {x: 1.0000004, y: 1.0000007, z: 1.0000004}
- name: LowerLeg_Right
parentName: UpperLeg_Right
position: {x: -32.819374, y: -1.0658141e-14, z: -3.5527137e-15}
rotation: {x: 0.000059747137, y: 0.15988994, z: 0.025033906, w: 0.9868174}
scale: {x: 1.0000005, y: 1.0000004, z: 1.0000013}
- name: Foot_Right
parentName: LowerLeg_Right
position: {x: -37.066925, y: -3.5527137e-15, z: 2.7533531e-14}
rotation: {x: -0.09970065, y: -0.6316042, z: -0.16588187, w: 0.75074565}
scale: {x: 1.0000006, y: 1.0000006, z: 1.0000011}
- name: Toe_Right
parentName: Foot_Right
position: {x: -12.755086, y: -7.1054274e-15, z: -1.2434498e-14}
rotation: {x: -0.4975446, y: -0.111791134, z: -0.10089414, w: 0.85426724}
scale: {x: 1.0000005, y: 0.99999994, z: 1.0000006}
- name: Toetip_Right
parentName: Toe_Right
position: {x: -17.96039, y: 0, z: 3.5527137e-15}
rotation: {x: -0.05678159, y: -0.018067792, z: -0.0037392974, w: 0.99821615}
scale: {x: 1.0000002, y: 0.99999994, z: 1.0000005}
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 1
skeletonHasParents: 0
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,692 +0,0 @@
fileFormatVersion: 2
guid: 215f12aa4e7512d4f97cbf44db79ac76
ModelImporter:
serializedVersion: 20200
internalIDToNameTable:
- first:
1: 100000
second: Chest
- first:
1: 100002
second: COB_CTRL
- first:
1: 100004
second: Foot_Left
- first:
1: 100006
second: Foot_Right
- first:
1: 100008
second: //RootNode
- first:
1: 100010
second: Footman_Mesh
- first:
1: 100012
second: Hand_Left
- first:
1: 100014
second: Hand_Right
- first:
1: 100016
second: Head
- first:
1: 100018
second: Hips
- first:
1: 100020
second: Index_Intermediate_Left
- first:
1: 100022
second: Index_Intermediate_Right
- first:
1: 100024
second: Index_Proximal_Left
- first:
1: 100026
second: Index_Proximal_Right
- first:
1: 100028
second: J_Tip
- first:
1: 100030
second: Jaw
- first:
1: 100032
second: LowerArm_Left
- first:
1: 100034
second: LowerArm_Right
- first:
1: 100036
second: LowerLeg_Left
- first:
1: 100038
second: LowerLeg_Right
- first:
1: 100040
second: Neck
- first:
1: 100042
second: RestOfFingers_Intermediate_Left
- first:
1: 100044
second: RestOfFingers_Intermediate_Right
- first:
1: 100046
second: RestOfFingers_Proximal_Left
- first:
1: 100048
second: RestOfFingers_Proximal_Right
- first:
1: 100050
second: Shield
- first:
1: 100052
second: Shoulder_Left
- first:
1: 100054
second: Shoulder_Right
- first:
1: 100056
second: Spine
- first:
1: 100058
second: Sword
- first:
1: 100060
second: Thumb_Intermediate_Left
- first:
1: 100062
second: Thumb_Intermediate_Right
- first:
1: 100064
second: Thumb_Proximal_Left
- first:
1: 100066
second: Thumb_Proximal_Right
- first:
1: 100068
second: Toe_Left
- first:
1: 100070
second: Toe_Right
- first:
1: 100072
second: Toetip_Left
- first:
1: 100074
second: Toetip_Right
- first:
1: 100076
second: UpperArm_Left
- first:
1: 100078
second: UpperArm_Right
- first:
1: 100080
second: UpperLeg_Left
- first:
1: 100082
second: UpperLeg_Right
- first:
4: 400000
second: Chest
- first:
4: 400002
second: COB_CTRL
- first:
4: 400004
second: Foot_Left
- first:
4: 400006
second: Foot_Right
- first:
4: 400008
second: //RootNode
- first:
4: 400010
second: Footman_Mesh
- first:
4: 400012
second: Hand_Left
- first:
4: 400014
second: Hand_Right
- first:
4: 400016
second: Head
- first:
4: 400018
second: Hips
- first:
4: 400020
second: Index_Intermediate_Left
- first:
4: 400022
second: Index_Intermediate_Right
- first:
4: 400024
second: Index_Proximal_Left
- first:
4: 400026
second: Index_Proximal_Right
- first:
4: 400028
second: J_Tip
- first:
4: 400030
second: Jaw
- first:
4: 400032
second: LowerArm_Left
- first:
4: 400034
second: LowerArm_Right
- first:
4: 400036
second: LowerLeg_Left
- first:
4: 400038
second: LowerLeg_Right
- first:
4: 400040
second: Neck
- first:
4: 400042
second: RestOfFingers_Intermediate_Left
- first:
4: 400044
second: RestOfFingers_Intermediate_Right
- first:
4: 400046
second: RestOfFingers_Proximal_Left
- first:
4: 400048
second: RestOfFingers_Proximal_Right
- first:
4: 400050
second: Shield
- first:
4: 400052
second: Shoulder_Left
- first:
4: 400054
second: Shoulder_Right
- first:
4: 400056
second: Spine
- first:
4: 400058
second: Sword
- first:
4: 400060
second: Thumb_Intermediate_Left
- first:
4: 400062
second: Thumb_Intermediate_Right
- first:
4: 400064
second: Thumb_Proximal_Left
- first:
4: 400066
second: Thumb_Proximal_Right
- first:
4: 400068
second: Toe_Left
- first:
4: 400070
second: Toe_Right
- first:
4: 400072
second: Toetip_Left
- first:
4: 400074
second: Toetip_Right
- first:
4: 400076
second: UpperArm_Left
- first:
4: 400078
second: UpperArm_Right
- first:
4: 400080
second: UpperLeg_Left
- first:
4: 400082
second: UpperLeg_Right
- first:
43: 4300000
second: Footman_Mesh
- first:
74: 7400000
second: defend
- first:
95: 9500000
second: //RootNode
- first:
111: 11100000
second: //RootNode
- first:
137: 13700000
second: Footman_Mesh
externalObjects: {}
materials:
materialImportMode: 1
materialName: 0
materialSearch: 1
materialLocation: 0
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 3
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations:
- serializedVersion: 16
name: defend
takeName: Take 001
internalID: 0
firstFrame: 1
lastFrame: 30
wrapMode: 0
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 1
loopBlend: 0
loopBlendOrientation: 1
loopBlendPositionY: 1
loopBlendPositionXZ: 1
keepOriginalOrientation: 1
keepOriginalPositionY: 1
keepOriginalPositionXZ: 1
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events: []
transformMask:
- path:
weight: 1
- path: COB_CTRL
weight: 0
- path: Footman_Mesh
weight: 0
- path: Hips
weight: 1
- path: Hips/Shield
weight: 1
- path: Hips/Spine
weight: 1
- path: Hips/Spine/Chest
weight: 1
- path: Hips/Spine/Chest/Neck
weight: 1
- path: Hips/Spine/Chest/Neck/Head
weight: 1
- path: Hips/Spine/Chest/Neck/Head/Jaw
weight: 1
- path: Hips/Spine/Chest/Neck/Head/Jaw/J_Tip
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/Index_Proximal_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/Index_Proximal_Left/Index_Intermediate_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/RestOfFingers_Proximal_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/RestOfFingers_Proximal_Left/RestOfFingers_Intermediate_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/Thumb_Proximal_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/Thumb_Proximal_Left/Thumb_Intermediate_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/Index_Proximal_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/Index_Proximal_Right/Index_Intermediate_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/RestOfFingers_Proximal_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/RestOfFingers_Proximal_Right/RestOfFingers_Intermediate_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/Thumb_Proximal_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/Thumb_Proximal_Right/Thumb_Intermediate_Right
weight: 1
- path: Hips/Sword
weight: 1
- path: Hips/UpperLeg_Left
weight: 1
- path: Hips/UpperLeg_Left/LowerLeg_Left
weight: 1
- path: Hips/UpperLeg_Left/LowerLeg_Left/Foot_Left
weight: 1
- path: Hips/UpperLeg_Left/LowerLeg_Left/Foot_Left/Toe_Left
weight: 1
- path: Hips/UpperLeg_Left/LowerLeg_Left/Foot_Left/Toe_Left/Toetip_Left
weight: 1
- path: Hips/UpperLeg_Right
weight: 1
- path: Hips/UpperLeg_Right/LowerLeg_Right
weight: 1
- path: Hips/UpperLeg_Right/LowerLeg_Right/Foot_Right
weight: 1
- path: Hips/UpperLeg_Right/LowerLeg_Right/Foot_Right/Toe_Right
weight: 1
- path: Hips/UpperLeg_Right/LowerLeg_Right/Foot_Right/Toe_Right/Toetip_Right
weight: 1
maskType: 0
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
isReadable: 1
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importVisibility: 0
importBlendShapes: 1
importCameras: 0
importLights: 0
fileIdsGeneration: 1
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
meshOptimizationFlags: -1
indexFormat: 1
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 4
normalCalculationMode: 0
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human: []
skeleton:
- name: footman_defend_01(Clone)
parentName:
position: {x: 0, y: 0, z: 0}
rotation: {x: 0, y: 0, z: 0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: COB_CTRL
parentName:
position: {x: 0.004, y: 0.65978205, z: -0.17136107}
rotation: {x: 0.109584615, y: -0.19028173, z: -0.021376925, w: 0.97536}
scale: {x: 0.01, y: 0.01, z: 0.010000001}
- name: Footman_Mesh
parentName:
position: {x: 0, y: 0, z: 0}
rotation: {x: 0, y: -0, z: 0, w: 1}
scale: {x: 0.01, y: 0.01, z: 0.01}
- name: Hips
parentName:
position: {x: 0.004, y: 0.7778548, z: 0.024665937}
rotation: {x: 0.11957903, y: 0.11957903, z: -0.6969224, w: 0.6969225}
scale: {x: 0.009999998, y: 0.01, z: 0.01}
- name: Spine
parentName:
position: {x: -22.08183, y: 2.7610132e-30, z: 2.789185e-15}
rotation: {x: 0.0000000041714956, y: -0.07073019, z: -0.000000041939902, w: 0.9974955}
scale: {x: 1, y: 1, z: 0.99999994}
- name: Chest
parentName:
position: {x: -24.493395, y: 4.37078e-15, z: -6.5791713e-15}
rotation: {x: 0.000000004171496, y: -0.19267076, z: -0.000000041939906, w: 0.9812635}
scale: {x: 0.9999996, y: 0.9999997, z: 1}
- name: Neck
parentName:
position: {x: -31.697706, y: 4.2682918e-15, z: 1.5827795e-14}
rotation: {x: -0.0000000021927513, y: 0.1462689, z: 0.000000042089766, w: 0.9892449}
scale: {x: 1, y: 1.0000001, z: 1}
- name: Head
parentName:
position: {x: -20.858675, y: 1.02066555e-14, z: 1.3950282e-15}
rotation: {x: -0.3823245, y: 0.0000000021927513, z: 0.92402816, w: -0.00000004208977}
scale: {x: 0.99999994, y: 0.99999994, z: 1}
- name: Jaw
parentName:
position: {x: -19.492151, y: -4.0412776e-15, z: -4.4981513}
rotation: {x: 0.000000017860568, y: 0.09718921, z: -0.00000003817534, w: 0.9952659}
scale: {x: 0.99999994, y: 1, z: 0.9999999}
- name: J_Tip
parentName:
position: {x: -9.274182, y: -1.2503675e-14, z: 8.099877}
rotation: {x: 0.29965067, y: -0.29965067, z: -0.640476, w: 0.640476}
scale: {x: 1.0000001, y: 1.0000002, z: 0.99999994}
- name: Shoulder_Left
parentName:
position: {x: -18.98868, y: -31.335035, z: -12.155753}
rotation: {x: -0.005294385, y: 0.09098777, z: 0.79941916, w: 0.59382004}
scale: {x: 1, y: 1.0000001, z: 1}
- name: UpperArm_Left
parentName:
position: {x: -14.901689, y: 2.842171e-14, z: 8.881784e-16}
rotation: {x: 0.026086552, y: -0.1077615, z: -0.16237192, w: 0.9804807}
scale: {x: 1.0000002, y: 1.0000001, z: 1.0000001}
- name: LowerArm_Left
parentName:
position: {x: -32.191196, y: 4.842915e-15, z: -2.9871985e-15}
rotation: {x: 0.00035524575, y: 0.064626455, z: 0.0047827368, w: 0.99789804}
scale: {x: 0.99999976, y: 0.99999994, z: 0.9999999}
- name: Hand_Left
parentName:
position: {x: -29.678864, y: -2.7758043e-29, z: 4.869975e-15}
rotation: {x: -0.0033529997, y: -0.08887863, z: -0.07221233, w: 0.9934158}
scale: {x: 0.99999976, y: 1.0000002, z: 0.9999999}
- name: RestOfFingers_Proximal_Left
parentName:
position: {x: -18.280243, y: -1.6586086e-14, z: -2.029683e-15}
rotation: {x: 0.007036325, y: 0.038031258, z: 0.07194682, w: 0.9966583}
scale: {x: 1.0000004, y: 0.9999998, z: 1.0000001}
- name: RestOfFingers_Intermediate_Left
parentName:
position: {x: -8.780147, y: 7.67957e-15, z: 3.7027159e-16}
rotation: {x: 0.00000001610115, y: 0.029670052, z: 0.0000000140879415, w: 0.99955976}
scale: {x: 0.9999999, y: 0.9999999, z: 0.9999999}
- name: Index_Proximal_Left
parentName:
position: {x: -16.901342, y: 1.1929646e-13, z: 10.104264}
rotation: {x: 0.0067923516, y: 0.04141017, z: 0.07197026, w: 0.9965236}
scale: {x: 1.0000002, y: 0.99999976, z: 0.9999999}
- name: Index_Intermediate_Left
parentName:
position: {x: -9.911482, y: 1.4998595e-14, z: 3.154118e-15}
rotation: {x: 0.00000001861509, y: 0.026280912, z: -0.000000012133206, w: 0.9996546}
scale: {x: 1, y: 0.9999999, z: 1}
- name: Thumb_Proximal_Left
parentName:
position: {x: -7.0572023, y: -4.708794, z: 9.280683}
rotation: {x: -0.06620511, y: 0.36255562, z: 0.15769365, w: 0.9161349}
scale: {x: 1.0000004, y: 0.9999999, z: 1.0000002}
- name: Thumb_Intermediate_Left
parentName:
position: {x: -10.653726, y: 3.648137e-16, z: 8.5441255e-15}
rotation: {x: 0.030814841, y: -0.21547185, z: -0.13817626, w: 0.9661934}
scale: {x: 1, y: 1, z: 0.9999999}
- name: Shoulder_Right
parentName:
position: {x: -18.98899, y: 31.335, z: -12.155691}
rotation: {x: 0.7994112, y: 0.5938308, z: 0.0052922214, w: -0.090987384}
scale: {x: 1.0000002, y: 1.0000005, z: 1.0000006}
- name: UpperArm_Right
parentName:
position: {x: 14.901961, y: 0.00046619424, z: 0.000079565914}
rotation: {x: 0.10775685, y: 0.026086215, z: -0.98048323, w: -0.16235992}
scale: {x: 1, y: 1, z: 0.9999997}
- name: LowerArm_Right
parentName:
position: {x: -32.191166, y: 4.4336893e-14, z: 3.536796e-15}
rotation: {x: -0.00035539793, y: -0.06462459, z: 0.0047837608, w: 0.99789816}
scale: {x: 1.0000004, y: 1, z: 1.0000002}
- name: Hand_Right
parentName:
position: {x: -29.678719, y: 4.5461288e-14, z: -2.7325554e-15}
rotation: {x: 0.0033532225, y: 0.08887915, z: -0.072216906, w: 0.99341536}
scale: {x: 0.9999994, y: 0.99999994, z: 0.9999992}
- name: RestOfFingers_Proximal_Right
parentName:
position: {x: -18.280209, y: -3.645552e-14, z: 1.8098782e-15}
rotation: {x: -0.0070367004, y: -0.03803295, z: 0.07195142, w: 0.9966579}
scale: {x: 1.0000002, y: 1.0000004, z: 1.0000005}
- name: RestOfFingers_Intermediate_Right
parentName:
position: {x: -8.7804575, y: 1.3120176e-14, z: -2.045785e-15}
rotation: {x: -0.0000000025775735, y: -0.0296687, z: 0.00000004162707, w: 0.9995598}
scale: {x: 0.9999997, y: 0.99999994, z: 0.99999976}
- name: Index_Proximal_Right
parentName:
position: {x: -16.9013, y: -5.4614235e-14, z: -10.104266}
rotation: {x: -0.0067927497, y: -0.041411348, z: 0.071974866, w: 0.9965233}
scale: {x: 1.0000004, y: 0.9999998, z: 1.0000002}
- name: Index_Intermediate_Right
parentName:
position: {x: -9.911691, y: 2.0547315e-15, z: -2.2696136e-15}
rotation: {x: -0.000000015177632, y: -0.026280066, z: 0.0000001054477, w: 0.99965465}
scale: {x: 0.9999999, y: 1.0000001, z: 0.9999999}
- name: Thumb_Proximal_Right
parentName:
position: {x: -7.0571103, y: -4.7085547, z: -9.280674}
rotation: {x: 0.06620065, y: -0.36255434, z: 0.15768968, w: 0.9161363}
scale: {x: 1.0000002, y: 1.0000004, z: 1.0000004}
- name: Thumb_Intermediate_Right
parentName:
position: {x: -10.653982, y: 2.4461068e-14, z: 1.7784693e-15}
rotation: {x: -0.031957757, y: 0.20743091, z: -0.13790222, w: 0.96795356}
scale: {x: 0.99999994, y: 1, z: 0.99999994}
- name: UpperLeg_Left
parentName:
position: {x: 3.5068195, y: -19.94618, z: -1.3763187}
rotation: {x: -0.2414414, y: -0.2406476, z: 0.9400832, w: 0.006198165}
scale: {x: 0.9999999, y: 0.9999998, z: 1}
- name: LowerLeg_Left
parentName:
position: {x: -32.81932, y: 2.1316282e-14, z: -8.881784e-15}
rotation: {x: -0.000059741335, y: -0.15989012, z: 0.025032552, w: 0.98681736}
scale: {x: 1, y: 0.9999998, z: 1}
- name: Foot_Left
parentName:
position: {x: -37.066936, y: -1.4210855e-14, z: -4.440892e-15}
rotation: {x: 0.31684917, y: 0.6395231, z: -0.10572263, w: 0.6924158}
scale: {x: 1.0000002, y: 0.99999976, z: 1.0000002}
- name: Toe_Left
parentName:
position: {x: -12.738982, y: -0.5618247, z: 0.30802163}
rotation: {x: 0.4498791, y: 0.11339964, z: -0.102188155, w: 0.8799472}
scale: {x: 0.99999994, y: 0.9999998, z: 1}
- name: Toetip_Left
parentName:
position: {x: -17.954567, y: -0.038039967, z: 0.4538383}
rotation: {x: 0.041624583, y: 0.03067606, z: -0.0034803154, w: 0.9986562}
scale: {x: 1.0000001, y: 0.99999994, z: 1.0000001}
- name: Shield
parentName:
position: {x: -36.94719, y: -62.859154, z: 21.787066}
rotation: {x: -2.1986723e-18, y: -0.16911028, z: -0.000000042146848, w: 0.98559713}
scale: {x: 1.0000001, y: 1, z: 0.9999999}
- name: Sword
parentName:
position: {x: -37.385925, y: 86.25157, z: 18.17991}
rotation: {x: -2.1986723e-18, y: -0.16911028, z: -0.000000042146848, w: 0.98559713}
scale: {x: 1.0000001, y: 1, z: 1.0000001}
- name: UpperLeg_Right
parentName:
position: {x: 3.5067785, y: 19.9462, z: -1.3763317}
rotation: {x: -0.008172598, y: 0.9452265, z: -0.21804802, w: 0.24276586}
scale: {x: 0.9999998, y: 1, z: 0.9999999}
- name: LowerLeg_Right
parentName:
position: {x: -32.819374, y: -1.0658141e-14, z: -3.5527137e-15}
rotation: {x: 0.00005974702, y: 0.1598899, z: 0.025033766, w: 0.98681736}
scale: {x: 0.99999994, y: 1, z: 0.99999976}
- name: Foot_Right
parentName:
position: {x: -37.066925, y: -3.5527137e-15, z: 2.7533531e-14}
rotation: {x: -0.2687201, y: -0.6451154, z: -0.057831235, w: 0.7129315}
scale: {x: 1.0000001, y: 0.9999999, z: 1.0000002}
- name: Toe_Right
parentName:
position: {x: -12.755086, y: -7.1054274e-15, z: -1.2434498e-14}
rotation: {x: -0.49754456, y: -0.111790985, z: -0.10089422, w: 0.8542673}
scale: {x: 0.9999998, y: 1, z: 0.99999964}
- name: Toetip_Right
parentName:
position: {x: -17.96039, y: 0, z: 3.5527137e-15}
rotation: {x: -0.056781646, y: -0.018067999, z: -0.0037392883, w: 0.9982161}
scale: {x: 0.99999994, y: 1.0000001, z: 1.0000001}
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 1
skeletonHasParents: 0
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,692 +0,0 @@
fileFormatVersion: 2
guid: 2e48304a01f069445a83cd957ef136cb
ModelImporter:
serializedVersion: 20200
internalIDToNameTable:
- first:
1: 100000
second: Chest
- first:
1: 100002
second: COB_CTRL
- first:
1: 100004
second: Foot_Left
- first:
1: 100006
second: Foot_Right
- first:
1: 100008
second: //RootNode
- first:
1: 100010
second: Footman_Mesh
- first:
1: 100012
second: Hand_Left
- first:
1: 100014
second: Hand_Right
- first:
1: 100016
second: Head
- first:
1: 100018
second: Hips
- first:
1: 100020
second: Index_Intermediate_Left
- first:
1: 100022
second: Index_Intermediate_Right
- first:
1: 100024
second: Index_Proximal_Left
- first:
1: 100026
second: Index_Proximal_Right
- first:
1: 100028
second: J_Tip
- first:
1: 100030
second: Jaw
- first:
1: 100032
second: LowerArm_Left
- first:
1: 100034
second: LowerArm_Right
- first:
1: 100036
second: LowerLeg_Left
- first:
1: 100038
second: LowerLeg_Right
- first:
1: 100040
second: Neck
- first:
1: 100042
second: RestOfFingers_Intermediate_Left
- first:
1: 100044
second: RestOfFingers_Intermediate_Right
- first:
1: 100046
second: RestOfFingers_Proximal_Left
- first:
1: 100048
second: RestOfFingers_Proximal_Right
- first:
1: 100050
second: Shield
- first:
1: 100052
second: Shoulder_Left
- first:
1: 100054
second: Shoulder_Right
- first:
1: 100056
second: Spine
- first:
1: 100058
second: Sword
- first:
1: 100060
second: Thumb_Intermediate_Left
- first:
1: 100062
second: Thumb_Intermediate_Right
- first:
1: 100064
second: Thumb_Proximal_Left
- first:
1: 100066
second: Thumb_Proximal_Right
- first:
1: 100068
second: Toe_Left
- first:
1: 100070
second: Toe_Right
- first:
1: 100072
second: Toetip_Left
- first:
1: 100074
second: Toetip_Right
- first:
1: 100076
second: UpperArm_Left
- first:
1: 100078
second: UpperArm_Right
- first:
1: 100080
second: UpperLeg_Left
- first:
1: 100082
second: UpperLeg_Right
- first:
4: 400000
second: Chest
- first:
4: 400002
second: COB_CTRL
- first:
4: 400004
second: Foot_Left
- first:
4: 400006
second: Foot_Right
- first:
4: 400008
second: //RootNode
- first:
4: 400010
second: Footman_Mesh
- first:
4: 400012
second: Hand_Left
- first:
4: 400014
second: Hand_Right
- first:
4: 400016
second: Head
- first:
4: 400018
second: Hips
- first:
4: 400020
second: Index_Intermediate_Left
- first:
4: 400022
second: Index_Intermediate_Right
- first:
4: 400024
second: Index_Proximal_Left
- first:
4: 400026
second: Index_Proximal_Right
- first:
4: 400028
second: J_Tip
- first:
4: 400030
second: Jaw
- first:
4: 400032
second: LowerArm_Left
- first:
4: 400034
second: LowerArm_Right
- first:
4: 400036
second: LowerLeg_Left
- first:
4: 400038
second: LowerLeg_Right
- first:
4: 400040
second: Neck
- first:
4: 400042
second: RestOfFingers_Intermediate_Left
- first:
4: 400044
second: RestOfFingers_Intermediate_Right
- first:
4: 400046
second: RestOfFingers_Proximal_Left
- first:
4: 400048
second: RestOfFingers_Proximal_Right
- first:
4: 400050
second: Shield
- first:
4: 400052
second: Shoulder_Left
- first:
4: 400054
second: Shoulder_Right
- first:
4: 400056
second: Spine
- first:
4: 400058
second: Sword
- first:
4: 400060
second: Thumb_Intermediate_Left
- first:
4: 400062
second: Thumb_Intermediate_Right
- first:
4: 400064
second: Thumb_Proximal_Left
- first:
4: 400066
second: Thumb_Proximal_Right
- first:
4: 400068
second: Toe_Left
- first:
4: 400070
second: Toe_Right
- first:
4: 400072
second: Toetip_Left
- first:
4: 400074
second: Toetip_Right
- first:
4: 400076
second: UpperArm_Left
- first:
4: 400078
second: UpperArm_Right
- first:
4: 400080
second: UpperLeg_Left
- first:
4: 400082
second: UpperLeg_Right
- first:
43: 4300000
second: Footman_Mesh
- first:
74: 7400000
second: die
- first:
95: 9500000
second: //RootNode
- first:
111: 11100000
second: //RootNode
- first:
137: 13700000
second: Footman_Mesh
externalObjects: {}
materials:
materialImportMode: 1
materialName: 0
materialSearch: 1
materialLocation: 0
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 3
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations:
- serializedVersion: 16
name: die
takeName: Take 001
internalID: 0
firstFrame: 1
lastFrame: 23
wrapMode: 8
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 0
loopBlend: 0
loopBlendOrientation: 1
loopBlendPositionY: 1
loopBlendPositionXZ: 1
keepOriginalOrientation: 1
keepOriginalPositionY: 1
keepOriginalPositionXZ: 1
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events: []
transformMask:
- path:
weight: 1
- path: COB_CTRL
weight: 0
- path: Footman_Mesh
weight: 0
- path: Hips
weight: 1
- path: Hips/Shield
weight: 1
- path: Hips/Spine
weight: 1
- path: Hips/Spine/Chest
weight: 1
- path: Hips/Spine/Chest/Neck
weight: 1
- path: Hips/Spine/Chest/Neck/Head
weight: 1
- path: Hips/Spine/Chest/Neck/Head/Jaw
weight: 1
- path: Hips/Spine/Chest/Neck/Head/Jaw/J_Tip
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/Index_Proximal_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/Index_Proximal_Left/Index_Intermediate_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/RestOfFingers_Proximal_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/RestOfFingers_Proximal_Left/RestOfFingers_Intermediate_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/Thumb_Proximal_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/Thumb_Proximal_Left/Thumb_Intermediate_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/Index_Proximal_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/Index_Proximal_Right/Index_Intermediate_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/RestOfFingers_Proximal_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/RestOfFingers_Proximal_Right/RestOfFingers_Intermediate_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/Thumb_Proximal_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/Thumb_Proximal_Right/Thumb_Intermediate_Right
weight: 1
- path: Hips/Sword
weight: 1
- path: Hips/UpperLeg_Left
weight: 1
- path: Hips/UpperLeg_Left/LowerLeg_Left
weight: 1
- path: Hips/UpperLeg_Left/LowerLeg_Left/Foot_Left
weight: 1
- path: Hips/UpperLeg_Left/LowerLeg_Left/Foot_Left/Toe_Left
weight: 1
- path: Hips/UpperLeg_Left/LowerLeg_Left/Foot_Left/Toe_Left/Toetip_Left
weight: 1
- path: Hips/UpperLeg_Right
weight: 1
- path: Hips/UpperLeg_Right/LowerLeg_Right
weight: 1
- path: Hips/UpperLeg_Right/LowerLeg_Right/Foot_Right
weight: 1
- path: Hips/UpperLeg_Right/LowerLeg_Right/Foot_Right/Toe_Right
weight: 1
- path: Hips/UpperLeg_Right/LowerLeg_Right/Foot_Right/Toe_Right/Toetip_Right
weight: 1
maskType: 0
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
isReadable: 1
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importVisibility: 0
importBlendShapes: 1
importCameras: 0
importLights: 0
fileIdsGeneration: 1
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
meshOptimizationFlags: -1
indexFormat: 1
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 4
normalCalculationMode: 0
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human: []
skeleton:
- name: footman_die(Clone)
parentName:
position: {x: 0, y: 0, z: 0}
rotation: {x: 0, y: 0, z: 0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: COB_CTRL
parentName:
position: {x: 0.004, y: 0.65978205, z: -0.17136107}
rotation: {x: 0.109584615, y: -0.19028173, z: -0.021376925, w: 0.97536}
scale: {x: 0.01, y: 0.01, z: 0.010000001}
- name: Footman_Mesh
parentName:
position: {x: 0, y: 0, z: 0}
rotation: {x: 0, y: -0, z: 0, w: 1}
scale: {x: 0.01, y: 0.01, z: 0.01}
- name: Hips
parentName:
position: {x: 0.004, y: 0.7778548, z: 0.024665937}
rotation: {x: 0.11957903, y: 0.11957903, z: -0.6969224, w: 0.6969225}
scale: {x: 0.009999998, y: 0.01, z: 0.01}
- name: Spine
parentName:
position: {x: -22.08183, y: 2.7610132e-30, z: 2.789185e-15}
rotation: {x: 0.0000000041714956, y: -0.07073019, z: -0.000000041939902, w: 0.9974955}
scale: {x: 1, y: 1, z: 0.99999994}
- name: Chest
parentName:
position: {x: -24.493395, y: 4.37078e-15, z: -6.5791713e-15}
rotation: {x: 0.000000004171496, y: -0.19267076, z: -0.000000041939906, w: 0.9812635}
scale: {x: 0.9999996, y: 0.9999997, z: 1}
- name: Neck
parentName:
position: {x: -31.697706, y: 4.2682918e-15, z: 1.5827795e-14}
rotation: {x: -0.0000000021927513, y: 0.1462689, z: 0.000000042089766, w: 0.9892449}
scale: {x: 1, y: 1.0000001, z: 1}
- name: Head
parentName:
position: {x: -20.858675, y: 1.02066555e-14, z: 1.3950282e-15}
rotation: {x: -0.3823245, y: 0.0000000021927513, z: 0.92402816, w: -0.00000004208977}
scale: {x: 0.99999994, y: 0.99999994, z: 1}
- name: Jaw
parentName:
position: {x: -19.492151, y: -4.0412776e-15, z: -4.4981513}
rotation: {x: 0.000000017860568, y: 0.09718921, z: -0.00000003817534, w: 0.9952659}
scale: {x: 0.99999994, y: 1, z: 0.9999999}
- name: J_Tip
parentName:
position: {x: -9.274182, y: -1.2503675e-14, z: 8.099877}
rotation: {x: 0.29965067, y: -0.29965067, z: -0.640476, w: 0.640476}
scale: {x: 1.0000001, y: 1.0000002, z: 0.99999994}
- name: Shoulder_Left
parentName:
position: {x: -18.98868, y: -31.335035, z: -12.155753}
rotation: {x: -0.005294385, y: 0.09098777, z: 0.79941916, w: 0.59382004}
scale: {x: 1, y: 1.0000001, z: 1}
- name: UpperArm_Left
parentName:
position: {x: -14.901689, y: 2.842171e-14, z: 8.881784e-16}
rotation: {x: 0.026086552, y: -0.1077615, z: -0.16237192, w: 0.9804807}
scale: {x: 1.0000002, y: 1.0000001, z: 1.0000001}
- name: LowerArm_Left
parentName:
position: {x: -32.191196, y: 4.842915e-15, z: -2.9871985e-15}
rotation: {x: 0.00035524575, y: 0.064626455, z: 0.0047827368, w: 0.99789804}
scale: {x: 0.99999976, y: 0.99999994, z: 0.9999999}
- name: Hand_Left
parentName:
position: {x: -29.678864, y: -2.7758043e-29, z: 4.869975e-15}
rotation: {x: -0.0033529997, y: -0.08887863, z: -0.07221233, w: 0.9934158}
scale: {x: 0.99999976, y: 1.0000002, z: 0.9999999}
- name: RestOfFingers_Proximal_Left
parentName:
position: {x: -18.280243, y: -1.6586086e-14, z: -2.029683e-15}
rotation: {x: 0.007036325, y: 0.038031258, z: 0.07194682, w: 0.9966583}
scale: {x: 1.0000004, y: 0.9999998, z: 1.0000001}
- name: RestOfFingers_Intermediate_Left
parentName:
position: {x: -8.780147, y: 7.67957e-15, z: 3.7027159e-16}
rotation: {x: 0.00000001610115, y: 0.029670052, z: 0.0000000140879415, w: 0.99955976}
scale: {x: 0.9999999, y: 0.9999999, z: 0.9999999}
- name: Index_Proximal_Left
parentName:
position: {x: -16.901342, y: 1.1929646e-13, z: 10.104264}
rotation: {x: 0.0067923516, y: 0.04141017, z: 0.07197026, w: 0.9965236}
scale: {x: 1.0000002, y: 0.99999976, z: 0.9999999}
- name: Index_Intermediate_Left
parentName:
position: {x: -9.911482, y: 1.4998595e-14, z: 3.154118e-15}
rotation: {x: 0.00000001861509, y: 0.026280912, z: -0.000000012133206, w: 0.9996546}
scale: {x: 1, y: 0.9999999, z: 1}
- name: Thumb_Proximal_Left
parentName:
position: {x: -7.0572023, y: -4.708794, z: 9.280683}
rotation: {x: -0.06620511, y: 0.36255562, z: 0.15769365, w: 0.9161349}
scale: {x: 1.0000004, y: 0.9999999, z: 1.0000002}
- name: Thumb_Intermediate_Left
parentName:
position: {x: -10.653726, y: 3.648137e-16, z: 8.5441255e-15}
rotation: {x: 0.030814841, y: -0.21547185, z: -0.13817626, w: 0.9661934}
scale: {x: 1, y: 1, z: 0.9999999}
- name: Shoulder_Right
parentName:
position: {x: -18.98899, y: 31.335, z: -12.155691}
rotation: {x: 0.7994112, y: 0.5938308, z: 0.0052922214, w: -0.090987384}
scale: {x: 1.0000002, y: 1.0000005, z: 1.0000006}
- name: UpperArm_Right
parentName:
position: {x: 14.901961, y: 0.00046619424, z: 0.000079565914}
rotation: {x: 0.10775685, y: 0.026086215, z: -0.98048323, w: -0.16235992}
scale: {x: 1, y: 1, z: 0.99999964}
- name: LowerArm_Right
parentName:
position: {x: -32.191166, y: 4.4336893e-14, z: 3.536796e-15}
rotation: {x: -0.00035539793, y: -0.06462459, z: 0.0047837608, w: 0.99789816}
scale: {x: 1.0000004, y: 0.99999994, z: 1.0000004}
- name: Hand_Right
parentName:
position: {x: -29.678719, y: 4.5461288e-14, z: -2.7325554e-15}
rotation: {x: 0.0033532225, y: 0.08887915, z: -0.072216906, w: 0.99341536}
scale: {x: 0.9999996, y: 1, z: 0.99999934}
- name: RestOfFingers_Proximal_Right
parentName:
position: {x: -18.280209, y: -3.645552e-14, z: 1.8098782e-15}
rotation: {x: -0.0070367004, y: -0.03803295, z: 0.07195142, w: 0.9966579}
scale: {x: 1.0000001, y: 1.0000002, z: 1.0000002}
- name: RestOfFingers_Intermediate_Right
parentName:
position: {x: -8.7804575, y: 1.3120176e-14, z: -2.045785e-15}
rotation: {x: -0.0000000025775735, y: -0.0296687, z: 0.00000004162707, w: 0.9995598}
scale: {x: 0.9999998, y: 1, z: 0.9999999}
- name: Index_Proximal_Right
parentName:
position: {x: -16.9013, y: -5.4614235e-14, z: -10.104266}
rotation: {x: -0.0067927497, y: -0.041411348, z: 0.071974866, w: 0.9965233}
scale: {x: 1.0000002, y: 1.0000001, z: 1.0000004}
- name: Index_Intermediate_Right
parentName:
position: {x: -9.911691, y: 2.0547315e-15, z: -2.2696136e-15}
rotation: {x: -0.000000015177632, y: -0.026280066, z: 0.0000001054477, w: 0.99965465}
scale: {x: 0.9999998, y: 1.0000001, z: 0.99999994}
- name: Thumb_Proximal_Right
parentName:
position: {x: -7.0571103, y: -4.7085547, z: -9.280674}
rotation: {x: 0.066200666, y: -0.36255416, z: 0.15768969, w: 0.9161365}
scale: {x: 1.0000004, y: 1.0000005, z: 1.0000001}
- name: Thumb_Intermediate_Right
parentName:
position: {x: -10.653982, y: 2.4461068e-14, z: 1.7784693e-15}
rotation: {x: -0.031957757, y: 0.20743091, z: -0.13790222, w: 0.96795356}
scale: {x: 0.99999976, y: 0.99999994, z: 0.99999994}
- name: UpperLeg_Left
parentName:
position: {x: 3.5068195, y: -19.94618, z: -1.3763187}
rotation: {x: -0.2414414, y: -0.2406476, z: 0.9400832, w: 0.006198165}
scale: {x: 0.9999999, y: 0.9999998, z: 1}
- name: LowerLeg_Left
parentName:
position: {x: -32.81932, y: 2.1316282e-14, z: -8.881784e-15}
rotation: {x: -0.000059741335, y: -0.15989012, z: 0.025032552, w: 0.98681736}
scale: {x: 1, y: 0.9999998, z: 1}
- name: Foot_Left
parentName:
position: {x: -37.066936, y: -1.4210855e-14, z: -4.440892e-15}
rotation: {x: 0.31684917, y: 0.6395231, z: -0.10572263, w: 0.6924158}
scale: {x: 1.0000002, y: 0.99999976, z: 1.0000002}
- name: Toe_Left
parentName:
position: {x: -12.738982, y: -0.5618247, z: 0.30802163}
rotation: {x: 0.4498791, y: 0.11339964, z: -0.102188155, w: 0.8799472}
scale: {x: 0.99999994, y: 0.9999998, z: 1}
- name: Toetip_Left
parentName:
position: {x: -17.954567, y: -0.038039967, z: 0.4538383}
rotation: {x: 0.041624583, y: 0.03067606, z: -0.0034803154, w: 0.9986562}
scale: {x: 1.0000001, y: 0.99999994, z: 1.0000001}
- name: Shield
parentName:
position: {x: -36.94719, y: -62.859154, z: 21.787066}
rotation: {x: -2.1986723e-18, y: -0.16911028, z: -0.000000042146848, w: 0.98559713}
scale: {x: 1.0000001, y: 1, z: 0.9999999}
- name: Sword
parentName:
position: {x: -37.385925, y: 86.25157, z: 18.17991}
rotation: {x: -2.1986723e-18, y: -0.16911028, z: -0.000000042146848, w: 0.98559713}
scale: {x: 1.0000001, y: 1, z: 1}
- name: UpperLeg_Right
parentName:
position: {x: 3.5067785, y: 19.9462, z: -1.3763317}
rotation: {x: -0.008172598, y: 0.9452265, z: -0.21804802, w: 0.24276586}
scale: {x: 0.9999998, y: 1, z: 0.9999999}
- name: LowerLeg_Right
parentName:
position: {x: -32.819374, y: -1.0658141e-14, z: -3.5527137e-15}
rotation: {x: 0.00005974702, y: 0.1598899, z: 0.025033766, w: 0.98681736}
scale: {x: 0.99999994, y: 1, z: 0.99999976}
- name: Foot_Right
parentName:
position: {x: -37.066925, y: -3.5527137e-15, z: 2.7533531e-14}
rotation: {x: -0.2687201, y: -0.6451154, z: -0.057831235, w: 0.7129315}
scale: {x: 1.0000001, y: 0.9999999, z: 1.0000002}
- name: Toe_Right
parentName:
position: {x: -12.755086, y: -7.1054274e-15, z: -1.2434498e-14}
rotation: {x: -0.49754456, y: -0.111790985, z: -0.10089422, w: 0.8542673}
scale: {x: 0.9999998, y: 1, z: 0.99999964}
- name: Toetip_Right
parentName:
position: {x: -17.96039, y: 0, z: 3.5527137e-15}
rotation: {x: -0.056781646, y: -0.018067999, z: -0.0037392883, w: 0.9982161}
scale: {x: 0.99999994, y: 1.0000001, z: 1.0000001}
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 1
skeletonHasParents: 0
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,692 +0,0 @@
fileFormatVersion: 2
guid: 22de3beb5b2b58745b1f2da501839c7c
ModelImporter:
serializedVersion: 20200
internalIDToNameTable:
- first:
1: 100000
second: Chest
- first:
1: 100002
second: COB_CTRL
- first:
1: 100004
second: Foot_Left
- first:
1: 100006
second: Foot_Right
- first:
1: 100008
second: //RootNode
- first:
1: 100010
second: Footman_Mesh
- first:
1: 100012
second: Hand_Left
- first:
1: 100014
second: Hand_Right
- first:
1: 100016
second: Head
- first:
1: 100018
second: Hips
- first:
1: 100020
second: Index_Intermediate_Left
- first:
1: 100022
second: Index_Intermediate_Right
- first:
1: 100024
second: Index_Proximal_Left
- first:
1: 100026
second: Index_Proximal_Right
- first:
1: 100028
second: J_Tip
- first:
1: 100030
second: Jaw
- first:
1: 100032
second: LowerArm_Left
- first:
1: 100034
second: LowerArm_Right
- first:
1: 100036
second: LowerLeg_Left
- first:
1: 100038
second: LowerLeg_Right
- first:
1: 100040
second: Neck
- first:
1: 100042
second: RestOfFingers_Intermediate_Left
- first:
1: 100044
second: RestOfFingers_Intermediate_Right
- first:
1: 100046
second: RestOfFingers_Proximal_Left
- first:
1: 100048
second: RestOfFingers_Proximal_Right
- first:
1: 100050
second: Shield
- first:
1: 100052
second: Shoulder_Left
- first:
1: 100054
second: Shoulder_Right
- first:
1: 100056
second: Spine
- first:
1: 100058
second: Sword
- first:
1: 100060
second: Thumb_Intermediate_Left
- first:
1: 100062
second: Thumb_Intermediate_Right
- first:
1: 100064
second: Thumb_Proximal_Left
- first:
1: 100066
second: Thumb_Proximal_Right
- first:
1: 100068
second: Toe_Left
- first:
1: 100070
second: Toe_Right
- first:
1: 100072
second: Toetip_Left
- first:
1: 100074
second: Toetip_Right
- first:
1: 100076
second: UpperArm_Left
- first:
1: 100078
second: UpperArm_Right
- first:
1: 100080
second: UpperLeg_Left
- first:
1: 100082
second: UpperLeg_Right
- first:
4: 400000
second: Chest
- first:
4: 400002
second: COB_CTRL
- first:
4: 400004
second: Foot_Left
- first:
4: 400006
second: Foot_Right
- first:
4: 400008
second: //RootNode
- first:
4: 400010
second: Footman_Mesh
- first:
4: 400012
second: Hand_Left
- first:
4: 400014
second: Hand_Right
- first:
4: 400016
second: Head
- first:
4: 400018
second: Hips
- first:
4: 400020
second: Index_Intermediate_Left
- first:
4: 400022
second: Index_Intermediate_Right
- first:
4: 400024
second: Index_Proximal_Left
- first:
4: 400026
second: Index_Proximal_Right
- first:
4: 400028
second: J_Tip
- first:
4: 400030
second: Jaw
- first:
4: 400032
second: LowerArm_Left
- first:
4: 400034
second: LowerArm_Right
- first:
4: 400036
second: LowerLeg_Left
- first:
4: 400038
second: LowerLeg_Right
- first:
4: 400040
second: Neck
- first:
4: 400042
second: RestOfFingers_Intermediate_Left
- first:
4: 400044
second: RestOfFingers_Intermediate_Right
- first:
4: 400046
second: RestOfFingers_Proximal_Left
- first:
4: 400048
second: RestOfFingers_Proximal_Right
- first:
4: 400050
second: Shield
- first:
4: 400052
second: Shoulder_Left
- first:
4: 400054
second: Shoulder_Right
- first:
4: 400056
second: Spine
- first:
4: 400058
second: Sword
- first:
4: 400060
second: Thumb_Intermediate_Left
- first:
4: 400062
second: Thumb_Intermediate_Right
- first:
4: 400064
second: Thumb_Proximal_Left
- first:
4: 400066
second: Thumb_Proximal_Right
- first:
4: 400068
second: Toe_Left
- first:
4: 400070
second: Toe_Right
- first:
4: 400072
second: Toetip_Left
- first:
4: 400074
second: Toetip_Right
- first:
4: 400076
second: UpperArm_Left
- first:
4: 400078
second: UpperArm_Right
- first:
4: 400080
second: UpperLeg_Left
- first:
4: 400082
second: UpperLeg_Right
- first:
43: 4300000
second: Footman_Mesh
- first:
74: 7400000
second: idle
- first:
95: 9500000
second: //RootNode
- first:
111: 11100000
second: //RootNode
- first:
137: 13700000
second: Footman_Mesh
externalObjects: {}
materials:
materialImportMode: 1
materialName: 0
materialSearch: 1
materialLocation: 0
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 3
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations:
- serializedVersion: 16
name: idle
takeName: Take 001
internalID: 0
firstFrame: 1
lastFrame: 35
wrapMode: 2
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 1
loopBlend: 0
loopBlendOrientation: 1
loopBlendPositionY: 1
loopBlendPositionXZ: 1
keepOriginalOrientation: 1
keepOriginalPositionY: 1
keepOriginalPositionXZ: 1
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events: []
transformMask:
- path:
weight: 1
- path: COB_CTRL
weight: 0
- path: Footman_Mesh
weight: 0
- path: Hips
weight: 1
- path: Hips/Shield
weight: 1
- path: Hips/Spine
weight: 1
- path: Hips/Spine/Chest
weight: 1
- path: Hips/Spine/Chest/Neck
weight: 1
- path: Hips/Spine/Chest/Neck/Head
weight: 1
- path: Hips/Spine/Chest/Neck/Head/Jaw
weight: 1
- path: Hips/Spine/Chest/Neck/Head/Jaw/J_Tip
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/Index_Proximal_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/Index_Proximal_Left/Index_Intermediate_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/RestOfFingers_Proximal_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/RestOfFingers_Proximal_Left/RestOfFingers_Intermediate_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/Thumb_Proximal_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Left/UpperArm_Left/LowerArm_Left/Hand_Left/Thumb_Proximal_Left/Thumb_Intermediate_Left
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/Index_Proximal_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/Index_Proximal_Right/Index_Intermediate_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/RestOfFingers_Proximal_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/RestOfFingers_Proximal_Right/RestOfFingers_Intermediate_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/Thumb_Proximal_Right
weight: 1
- path: Hips/Spine/Chest/Shoulder_Right/UpperArm_Right/LowerArm_Right/Hand_Right/Thumb_Proximal_Right/Thumb_Intermediate_Right
weight: 1
- path: Hips/Sword
weight: 1
- path: Hips/UpperLeg_Left
weight: 1
- path: Hips/UpperLeg_Left/LowerLeg_Left
weight: 1
- path: Hips/UpperLeg_Left/LowerLeg_Left/Foot_Left
weight: 1
- path: Hips/UpperLeg_Left/LowerLeg_Left/Foot_Left/Toe_Left
weight: 1
- path: Hips/UpperLeg_Left/LowerLeg_Left/Foot_Left/Toe_Left/Toetip_Left
weight: 1
- path: Hips/UpperLeg_Right
weight: 1
- path: Hips/UpperLeg_Right/LowerLeg_Right
weight: 1
- path: Hips/UpperLeg_Right/LowerLeg_Right/Foot_Right
weight: 1
- path: Hips/UpperLeg_Right/LowerLeg_Right/Foot_Right/Toe_Right
weight: 1
- path: Hips/UpperLeg_Right/LowerLeg_Right/Foot_Right/Toe_Right/Toetip_Right
weight: 1
maskType: 0
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
isReadable: 1
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importVisibility: 0
importBlendShapes: 1
importCameras: 0
importLights: 0
fileIdsGeneration: 1
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
meshOptimizationFlags: -1
indexFormat: 1
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 4
normalCalculationMode: 0
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human: []
skeleton:
- name: footman_idle(Clone)
parentName:
position: {x: 0, y: 0, z: 0}
rotation: {x: 0, y: 0, z: 0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: COB_CTRL
parentName:
position: {x: 0.0042852233, y: 0.6601113, z: -0.1711083}
rotation: {x: 0.10958317, y: -0.19028348, z: -0.021378642, w: 0.9753598}
scale: {x: 0.01, y: 0.01, z: 0.01}
- name: Footman_Mesh
parentName:
position: {x: 0, y: 0, z: 0}
rotation: {x: 0, y: -0, z: 0, w: 1}
scale: {x: 0.01, y: 0.01, z: 0.01}
- name: Hips
parentName:
position: {x: 0.0042852233, y: 0.7778548, z: 0.024665922}
rotation: {x: 0.11957903, y: 0.11957903, z: -0.6969224, w: 0.6969225}
scale: {x: 0.009999998, y: 0.009999999, z: 0.009999998}
- name: Spine
parentName:
position: {x: -22.08183, y: 2.7610132e-30, z: 2.789185e-15}
rotation: {x: 0.0000000041714956, y: -0.07073019, z: -0.000000041939902, w: 0.9974955}
scale: {x: 1.0000001, y: 1, z: 0.99999994}
- name: Chest
parentName:
position: {x: -24.493395, y: 4.37078e-15, z: -6.5791713e-15}
rotation: {x: 0.000000004171496, y: -0.19267076, z: -0.000000041939906, w: 0.9812635}
scale: {x: 0.9999999, y: 0.9999998, z: 1}
- name: Neck
parentName:
position: {x: -31.697706, y: 4.2682918e-15, z: 1.5827795e-14}
rotation: {x: -0.0000000021927513, y: 0.1462689, z: 0.000000042089766, w: 0.9892449}
scale: {x: 0.9999998, y: 1, z: 0.99999994}
- name: Head
parentName:
position: {x: -20.858675, y: 1.02066555e-14, z: 1.3950282e-15}
rotation: {x: -0.3823245, y: 0.0000000021927513, z: 0.92402816, w: -0.00000004208977}
scale: {x: 1, y: 0.99999994, z: 1}
- name: Jaw
parentName:
position: {x: -19.492151, y: -4.0412776e-15, z: -4.4981513}
rotation: {x: 0.000000017860568, y: 0.09718921, z: -0.00000003817534, w: 0.9952659}
scale: {x: 1.0000001, y: 1, z: 1.0000001}
- name: J_Tip
parentName:
position: {x: -9.274182, y: -1.2503675e-14, z: 8.099877}
rotation: {x: 0.29965067, y: -0.29965067, z: -0.640476, w: 0.640476}
scale: {x: 1, y: 1, z: 0.99999994}
- name: Shoulder_Left
parentName:
position: {x: -18.98868, y: -31.335035, z: -12.155753}
rotation: {x: -0.005294429, y: 0.09098784, z: 0.7994192, w: 0.59382}
scale: {x: 1, y: 1, z: 0.9999999}
- name: UpperArm_Left
parentName:
position: {x: -14.901689, y: 2.842171e-14, z: 8.881784e-16}
rotation: {x: 0.026086558, y: -0.10776169, z: -0.16237192, w: 0.9804807}
scale: {x: 0.99999994, y: 0.9999998, z: 1}
- name: LowerArm_Left
parentName:
position: {x: -32.191196, y: 4.842915e-15, z: -2.9871985e-15}
rotation: {x: 0.00035525253, y: 0.06462668, z: 0.0047825873, w: 0.99789804}
scale: {x: 1, y: 1, z: 1.0000001}
- name: Hand_Left
parentName:
position: {x: -29.678864, y: -2.7758043e-29, z: 4.869975e-15}
rotation: {x: -0.0033529997, y: -0.08887863, z: -0.07221233, w: 0.9934158}
scale: {x: 1.0000001, y: 1.0000001, z: 0.9999998}
- name: RestOfFingers_Proximal_Left
parentName:
position: {x: -18.280243, y: -1.6586086e-14, z: -2.029683e-15}
rotation: {x: 0.007036325, y: 0.038031258, z: 0.07194682, w: 0.9966583}
scale: {x: 1, y: 1, z: 1.0000001}
- name: RestOfFingers_Intermediate_Left
parentName:
position: {x: -8.780147, y: 7.67957e-15, z: 3.7027159e-16}
rotation: {x: 0.00000001610115, y: 0.029670052, z: 0.0000000140879415, w: 0.99955976}
scale: {x: 1, y: 0.9999999, z: 0.99999994}
- name: Index_Proximal_Left
parentName:
position: {x: -16.901342, y: 1.1929646e-13, z: 10.104264}
rotation: {x: 0.0067923516, y: 0.04141017, z: 0.07197026, w: 0.9965236}
scale: {x: 0.9999999, y: 1, z: 1.0000001}
- name: Index_Intermediate_Left
parentName:
position: {x: -9.911482, y: 1.4998595e-14, z: 3.154118e-15}
rotation: {x: 0.00000001861509, y: 0.026280912, z: -0.000000012133206, w: 0.9996546}
scale: {x: 1.0000001, y: 1.0000001, z: 1}
- name: Thumb_Proximal_Left
parentName:
position: {x: -7.0572023, y: -4.708794, z: 9.280683}
rotation: {x: -0.06620513, y: 0.36255512, z: 0.15769364, w: 0.916135}
scale: {x: 1.0000002, y: 1.0000001, z: 1.0000002}
- name: Thumb_Intermediate_Left
parentName:
position: {x: -10.653726, y: 3.648137e-16, z: 8.5441255e-15}
rotation: {x: 0.030814841, y: -0.21547185, z: -0.13817626, w: 0.9661934}
scale: {x: 0.9999999, y: 0.99999994, z: 1.0000001}
- name: Shoulder_Right
parentName:
position: {x: -18.98899, y: 31.335, z: -12.155691}
rotation: {x: 0.79941076, y: 0.5938314, z: 0.005292095, w: -0.09098735}
scale: {x: 1.0000001, y: 1.0000004, z: 1.0000002}
- name: UpperArm_Right
parentName:
position: {x: 14.901961, y: 0.00046619424, z: 0.000079565914}
rotation: {x: 0.10775659, y: 0.02608616, z: -0.9804833, w: -0.16235952}
scale: {x: 1, y: 1, z: 0.9999997}
- name: LowerArm_Right
parentName:
position: {x: -32.191166, y: 4.4336893e-14, z: 3.536796e-15}
rotation: {x: -0.00035538155, y: -0.06462456, z: 0.0047837985, w: 0.99789816}
scale: {x: 1.0000006, y: 1.0000001, z: 1.0000008}
- name: Hand_Right
parentName:
position: {x: -29.678719, y: 4.5461288e-14, z: -2.7325554e-15}
rotation: {x: 0.0033532225, y: 0.08887915, z: -0.072216906, w: 0.99341536}
scale: {x: 0.99999946, y: 0.99999994, z: 0.99999964}
- name: RestOfFingers_Proximal_Right
parentName:
position: {x: -18.280209, y: -3.645552e-14, z: 1.8098782e-15}
rotation: {x: -0.0070367004, y: -0.03803295, z: 0.07195142, w: 0.9966579}
scale: {x: 1.0000006, y: 0.9999997, z: 1}
- name: RestOfFingers_Intermediate_Right
parentName:
position: {x: -8.7804575, y: 1.3120176e-14, z: -2.045785e-15}
rotation: {x: -0.0000000025775735, y: -0.0296687, z: 0.00000004162707, w: 0.9995598}
scale: {x: 0.99999976, y: 1.0000002, z: 1}
- name: Index_Proximal_Right
parentName:
position: {x: -16.9013, y: -5.4614235e-14, z: -10.104266}
rotation: {x: -0.0067927497, y: -0.041411348, z: 0.071974866, w: 0.9965233}
scale: {x: 1.0000004, y: 0.99999964, z: 1.0000001}
- name: Index_Intermediate_Right
parentName:
position: {x: -9.911691, y: 2.0547315e-15, z: -2.2696136e-15}
rotation: {x: -0.000000015177632, y: -0.026280066, z: 0.0000001054477, w: 0.99965465}
scale: {x: 1, y: 1.0000002, z: 1.0000002}
- name: Thumb_Proximal_Right
parentName:
position: {x: -7.0571103, y: -4.7085547, z: -9.280674}
rotation: {x: 0.066200264, y: -0.36255375, z: 0.15769042, w: 0.9161365}
scale: {x: 1.0000004, y: 1, z: 1.0000004}
- name: Thumb_Intermediate_Right
parentName:
position: {x: -10.653982, y: 2.4461068e-14, z: 1.7784693e-15}
rotation: {x: -0.031957757, y: 0.20743091, z: -0.13790222, w: 0.96795356}
scale: {x: 1.0000002, y: 1, z: 0.99999976}
- name: UpperLeg_Left
parentName:
position: {x: 3.5068195, y: -19.94618, z: -1.3763187}
rotation: {x: -0.24868298, y: -0.0155566, z: 0.9681314, w: 0.025227528}
scale: {x: 0.9999998, y: 0.9999998, z: 0.99999994}
- name: LowerLeg_Left
parentName:
position: {x: -32.81932, y: 2.1316282e-14, z: -8.881784e-15}
rotation: {x: -0.000059746817, y: -0.15989009, z: 0.025032653, w: 0.98681736}
scale: {x: 1.0000001, y: 0.99999994, z: 1.0000001}
- name: Foot_Left
parentName:
position: {x: -37.066936, y: -1.4210855e-14, z: -4.440892e-15}
rotation: {x: 0.13149361, y: 0.6137422, z: -0.22415833, w: 0.7455086}
scale: {x: 0.99999994, y: 1.0000001, z: 0.9999998}
- name: Toe_Left
parentName:
position: {x: -12.738982, y: -0.5618247, z: 0.30802163}
rotation: {x: 0.44987908, y: 0.11339966, z: -0.102188185, w: 0.8799471}
scale: {x: 1.0000001, y: 0.99999994, z: 1}
- name: Toetip_Left
parentName:
position: {x: -17.954567, y: -0.038039967, z: 0.4538383}
rotation: {x: 0.041624524, y: 0.03067606, z: -0.0034802542, w: 0.9986562}
scale: {x: 1.0000001, y: 1, z: 1}
- name: Shield
parentName:
position: {x: -36.892387, y: -62.87267, z: 21.847818}
rotation: {x: -2.1986723e-18, y: -0.16911028, z: -0.000000042146848, w: 0.98559713}
scale: {x: 1, y: 0.9999999, z: 0.99999994}
- name: Sword
parentName:
position: {x: -37.368732, y: 86.23419, z: 18.132149}
rotation: {x: -2.1986723e-18, y: -0.16911028, z: -0.000000042146848, w: 0.98559713}
scale: {x: 1, y: 0.9999999, z: 1.0000001}
- name: UpperLeg_Right
parentName:
position: {x: 3.5067785, y: 19.9462, z: -1.3763317}
rotation: {x: -0.025228102, y: 0.96813154, z: -0.015552519, w: 0.24868284}
scale: {x: 0.9999997, y: 0.9999999, z: 0.9999998}
- name: LowerLeg_Right
parentName:
position: {x: -32.819374, y: -1.0658141e-14, z: -3.5527137e-15}
rotation: {x: 0.000059737282, y: 0.15988994, z: 0.025033912, w: 0.9868174}
scale: {x: 0.99999976, y: 0.9999997, z: 0.99999976}
- name: Foot_Right
parentName:
position: {x: -37.066925, y: -3.5527137e-15, z: 2.7533531e-14}
rotation: {x: -0.099700645, y: -0.6316042, z: -0.16588186, w: 0.75074565}
scale: {x: 1.0000004, y: 1, z: 1.0000001}
- name: Toe_Right
parentName:
position: {x: -12.755086, y: -7.1054274e-15, z: -1.2434498e-14}
rotation: {x: -0.4975446, y: -0.11179101, z: -0.1008942, w: 0.8542673}
scale: {x: 0.99999994, y: 1.0000002, z: 0.9999998}
- name: Toetip_Right
parentName:
position: {x: -17.96039, y: 0, z: 3.5527137e-15}
rotation: {x: -0.056781564, y: -0.018067915, z: -0.0037393095, w: 0.9982161}
scale: {x: 1.0000002, y: 1, z: 1.0000004}
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 1
skeletonHasParents: 0
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,845 +0,0 @@
fileFormatVersion: 2
guid: 46783dc54d7600447880ab6f35037fb4
ModelImporter:
serializedVersion: 19301
internalIDToNameTable:
- first:
1: 100000
second: Chest
- first:
1: 100002
second: COB_CTRL
- first:
1: 100004
second: Foot_Left
- first:
1: 100006
second: Foot_Right
- first:
1: 100008
second: //RootNode
- first:
1: 100010
second: Footman_Mesh
- first:
1: 100012
second: Hand_Left
- first:
1: 100014
second: Hand_Right
- first:
1: 100016
second: Head
- first:
1: 100018
second: Hips
- first:
1: 100020
second: Index_Intermediate_Left
- first:
1: 100022
second: Index_Intermediate_Right
- first:
1: 100024
second: Index_Proximal_Left
- first:
1: 100026
second: Index_Proximal_Right
- first:
1: 100028
second: J_Tip
- first:
1: 100030
second: Jaw
- first:
1: 100032
second: LowerArm_Left
- first:
1: 100034
second: LowerArm_Right
- first:
1: 100036
second: LowerLeg_Left
- first:
1: 100038
second: LowerLeg_Right
- first:
1: 100040
second: Neck
- first:
1: 100042
second: RestOfFingers_Intermediate_Left
- first:
1: 100044
second: RestOfFingers_Intermediate_Right
- first:
1: 100046
second: RestOfFingers_Proximal_Left
- first:
1: 100048
second: RestOfFingers_Proximal_Right
- first:
1: 100050
second: Shield
- first:
1: 100052
second: Shoulder_Left
- first:
1: 100054
second: Shoulder_Right
- first:
1: 100056
second: Spine
- first:
1: 100058
second: Sword
- first:
1: 100060
second: Thumb_Intermediate_Left
- first:
1: 100062
second: Thumb_Intermediate_Right
- first:
1: 100064
second: Thumb_Proximal_Left
- first:
1: 100066
second: Thumb_Proximal_Right
- first:
1: 100068
second: Toe_Left
- first:
1: 100070
second: Toe_Right
- first:
1: 100072
second: Toetip_Left
- first:
1: 100074
second: Toetip_Right
- first:
1: 100076
second: UpperArm_Left
- first:
1: 100078
second: UpperArm_Right
- first:
1: 100080
second: UpperLeg_Left
- first:
1: 100082
second: UpperLeg_Right
- first:
4: 400000
second: Chest
- first:
4: 400002
second: COB_CTRL
- first:
4: 400004
second: Foot_Left
- first:
4: 400006
second: Foot_Right
- first:
4: 400008
second: //RootNode
- first:
4: 400010
second: Footman_Mesh
- first:
4: 400012
second: Hand_Left
- first:
4: 400014
second: Hand_Right
- first:
4: 400016
second: Head
- first:
4: 400018
second: Hips
- first:
4: 400020
second: Index_Intermediate_Left
- first:
4: 400022
second: Index_Intermediate_Right
- first:
4: 400024
second: Index_Proximal_Left
- first:
4: 400026
second: Index_Proximal_Right
- first:
4: 400028
second: J_Tip
- first:
4: 400030
second: Jaw
- first:
4: 400032
second: LowerArm_Left
- first:
4: 400034
second: LowerArm_Right
- first:
4: 400036
second: LowerLeg_Left
- first:
4: 400038
second: LowerLeg_Right
- first:
4: 400040
second: Neck
- first:
4: 400042
second: RestOfFingers_Intermediate_Left
- first:
4: 400044
second: RestOfFingers_Intermediate_Right
- first:
4: 400046
second: RestOfFingers_Proximal_Left
- first:
4: 400048
second: RestOfFingers_Proximal_Right
- first:
4: 400050
second: Shield
- first:
4: 400052
second: Shoulder_Left
- first:
4: 400054
second: Shoulder_Right
- first:
4: 400056
second: Spine
- first:
4: 400058
second: Sword
- first:
4: 400060
second: Thumb_Intermediate_Left
- first:
4: 400062
second: Thumb_Intermediate_Right
- first:
4: 400064
second: Thumb_Proximal_Left
- first:
4: 400066
second: Thumb_Proximal_Right
- first:
4: 400068
second: Toe_Left
- first:
4: 400070
second: Toe_Right
- first:
4: 400072
second: Toetip_Left
- first:
4: 400074
second: Toetip_Right
- first:
4: 400076
second: UpperArm_Left
- first:
4: 400078
second: UpperArm_Right
- first:
4: 400080
second: UpperLeg_Left
- first:
4: 400082
second: UpperLeg_Right
- first:
43: 4300000
second: Footman_Mesh
- first:
95: 9500000
second: //RootNode
- first:
137: 13700000
second: Footman_Mesh
externalObjects:
- first:
type: UnityEngine:Material
assembly: UnityEngine.CoreModule
name: Footman1
second: {fileID: 2100000, guid: 08e31e73bd7577d48b36535ac3828d5d, type: 2}
materials:
materialImportMode: 0
materialName: 0
materialSearch: 1
materialLocation: 0
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 3
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 1
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importVisibility: 0
importBlendShapes: 1
importCameras: 0
importLights: 0
fileIdsGeneration: 1
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
meshOptimizationFlags: -1
indexFormat: 1
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVPackMargin: 4
useFileScale: 1
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 0
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 1
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 0
humanDescription:
serializedVersion: 3
human:
- boneName: Hips
humanName: Hips
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: UpperLeg_Left
humanName: LeftUpperLeg
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: UpperLeg_Right
humanName: RightUpperLeg
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LowerLeg_Left
humanName: LeftLowerLeg
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LowerLeg_Right
humanName: RightLowerLeg
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Foot_Left
humanName: LeftFoot
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Foot_Right
humanName: RightFoot
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Spine
humanName: Spine
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Chest
humanName: Chest
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Neck
humanName: Neck
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Head
humanName: Head
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Shoulder_Left
humanName: LeftShoulder
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Shoulder_Right
humanName: RightShoulder
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: UpperArm_Left
humanName: LeftUpperArm
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: UpperArm_Right
humanName: RightUpperArm
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LowerArm_Left
humanName: LeftLowerArm
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: LowerArm_Right
humanName: RightLowerArm
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Hand_Left
humanName: LeftHand
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Hand_Right
humanName: RightHand
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Toe_Left
humanName: LeftToes
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Toe_Right
humanName: RightToes
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Jaw
humanName: Jaw
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Thumb_Proximal_Left
humanName: Left Thumb Proximal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Thumb_Intermediate_Left
humanName: Left Thumb Intermediate
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Index_Proximal_Left
humanName: Left Index Proximal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Index_Intermediate_Left
humanName: Left Index Intermediate
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RestOfFingers_Proximal_Left
humanName: Left Little Proximal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RestOfFingers_Intermediate_Left
humanName: Left Little Intermediate
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Thumb_Proximal_Right
humanName: Right Thumb Proximal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Thumb_Intermediate_Right
humanName: Right Thumb Intermediate
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Index_Proximal_Right
humanName: Right Index Proximal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: Index_Intermediate_Right
humanName: Right Index Intermediate
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RestOfFingers_Proximal_Right
humanName: Right Little Proximal
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
- boneName: RestOfFingers_Intermediate_Right
humanName: Right Little Intermediate
limit:
min: {x: 0, y: 0, z: 0}
max: {x: 0, y: 0, z: 0}
value: {x: 0, y: 0, z: 0}
length: 0
modified: 0
skeleton:
- name: footman(Clone)
parentName:
position: {x: 0, y: 0, z: 0}
rotation: {x: 0, y: 0, z: 0, w: 1}
scale: {x: 1, y: 1, z: 1}
- name: COB_CTRL
parentName:
position: {x: 0.004, y: 0.65978205, z: -0.17136107}
rotation: {x: 0.109584615, y: -0.19028173, z: -0.021376925, w: 0.97536}
scale: {x: 0.01, y: 0.01, z: 0.01}
- name: Footman_Mesh
parentName:
position: {x: 0, y: 0, z: 0}
rotation: {x: 0, y: 0, z: 0, w: 1}
scale: {x: 0.01, y: 0.01, z: 0.01}
- name: Hips
parentName:
position: {x: 0.004, y: 0.7778548, z: 0.024665922}
rotation: {x: 0.119579025, y: 0.119579025, z: -0.69692236, w: 0.6969224}
scale: {x: 0.009999997, y: 0.01, z: 0.01}
- name: Spine
parentName:
position: {x: -22.08183, y: 2.7610132e-30, z: 2.789185e-15}
rotation: {x: 0.0000000037252903, y: -0.070730194, z: -0.000000059604645, w: 0.99749553}
scale: {x: 1.0000004, y: 1.0000002, z: 1}
- name: Chest
parentName:
position: {x: -24.493395, y: 4.37078e-15, z: -6.5791713e-15}
rotation: {x: 0.000000026077032, y: -0.19267073, z: -9.313226e-10, w: 0.9812635}
scale: {x: 0.9999999, y: 0.99999994, z: 0.99999994}
- name: Neck
parentName:
position: {x: -31.697706, y: 4.2682918e-15, z: 1.5827795e-14}
rotation: {x: -0.000000029802322, y: 0.14626889, z: -0.0000000011641532, w: 0.98924494}
scale: {x: 1, y: 1.0000002, z: 0.99999994}
- name: Head
parentName:
position: {x: -20.858675, y: 1.02066555e-14, z: 1.3950282e-15}
rotation: {x: -0.38232452, y: -0.000000014901159, z: 0.92402816, w: -0.000000029802319}
scale: {x: 0.9999999, y: 0.9999999, z: 1}
- name: Jaw
parentName:
position: {x: -19.492151, y: -4.0412776e-15, z: -4.4981513}
rotation: {x: 0, y: 0.09718922, z: 0.000000029802319, w: 0.99526596}
scale: {x: 1, y: 0.99999994, z: 0.9999999}
- name: J_Tip
parentName:
position: {x: -9.274182, y: -1.2503675e-14, z: 8.099877}
rotation: {x: 0.29965064, y: -0.29965067, z: -0.640476, w: 0.6404759}
scale: {x: 1.0000005, y: 1.0000001, z: 1.0000002}
- name: Shoulder_Left
parentName:
position: {x: -18.98868, y: -31.335035, z: -12.155753}
rotation: {x: -0.005294334, y: 0.09098781, z: 0.79941905, w: 0.5938203}
scale: {x: 1, y: 0.9999998, z: 1}
- name: UpperArm_Left
parentName:
position: {x: -14.901689, y: 2.842171e-14, z: 8.881784e-16}
rotation: {x: 0.02608649, y: -0.107761435, z: -0.16237162, w: 0.9804808}
scale: {x: 1.0000001, y: 1.0000001, z: 1}
- name: LowerArm_Left
parentName:
position: {x: -32.191196, y: 4.842915e-15, z: -2.9871985e-15}
rotation: {x: 0.00035528588, y: 0.064626664, z: 0.004782589, w: 0.99789804}
scale: {x: 0.9999998, y: 1.0000001, z: 1}
- name: Hand_Left
parentName:
position: {x: -29.678864, y: -2.7758043e-29, z: 4.869975e-15}
rotation: {x: -0.0033529915, y: -0.08887862, z: -0.07221227, w: 0.9934157}
scale: {x: 1.0000001, y: 0.99999994, z: 0.99999976}
- name: RestOfFingers_Proximal_Left
parentName:
position: {x: -18.280243, y: -1.6586086e-14, z: -2.029683e-15}
rotation: {x: 0.007036331, y: 0.038031265, z: 0.07194678, w: 0.9966584}
scale: {x: 1.0000001, y: 1.0000002, z: 1.0000002}
- name: RestOfFingers_Intermediate_Left
parentName:
position: {x: -8.780147, y: 7.67957e-15, z: 3.7027159e-16}
rotation: {x: -0.0000000074505815, y: 0.029670015, z: 0.00000008381901, w: 0.99955976}
scale: {x: 0.9999999, y: 0.9999998, z: 0.99999976}
- name: Index_Proximal_Left
parentName:
position: {x: -16.901342, y: 1.1929646e-13, z: 10.104264}
rotation: {x: 0.0067923577, y: 0.041410178, z: 0.07197022, w: 0.9965237}
scale: {x: 0.99999976, y: 1.0000002, z: 1.0000001}
- name: Index_Intermediate_Left
parentName:
position: {x: -9.911482, y: 1.4998595e-14, z: 3.154118e-15}
rotation: {x: -0.0000000074505797, y: 0.026280899, z: 0.000000013969837, w: 0.99965465}
scale: {x: 1.0000001, y: 0.9999999, z: 1.0000001}
- name: Thumb_Proximal_Left
parentName:
position: {x: -7.0572023, y: -4.708794, z: 9.280683}
rotation: {x: -0.06620525, y: 0.36255533, z: 0.15769345, w: 0.916135}
scale: {x: 1.0000002, y: 0.99999994, z: 1}
- name: Thumb_Intermediate_Left
parentName:
position: {x: -10.653726, y: 3.648137e-16, z: 8.5441255e-15}
rotation: {x: 0.030814871, y: -0.21547191, z: -0.13817623, w: 0.9661934}
scale: {x: 1.0000001, y: 1.0000001, z: 1.0000001}
- name: Shoulder_Right
parentName:
position: {x: -18.98899, y: 31.335, z: -12.155691}
rotation: {x: 0.799411, y: 0.5938312, z: 0.0052921325, w: -0.090987325}
scale: {x: 1, y: 1, z: 1}
- name: UpperArm_Right
parentName:
position: {x: 14.901961, y: 0.00046619424, z: 0.000079565914}
rotation: {x: 0.10775672, y: 0.026086168, z: -0.98048323, w: -0.16235963}
scale: {x: 0.99999934, y: 0.99999994, z: 0.99999964}
- name: LowerArm_Right
parentName:
position: {x: -32.191166, y: 4.4336893e-14, z: 3.536796e-15}
rotation: {x: -0.0003553833, y: -0.064624555, z: 0.0047839778, w: 0.9978981}
scale: {x: 1.0000002, y: 1, z: 1.0000006}
- name: Hand_Right
parentName:
position: {x: -29.678719, y: 4.5461288e-14, z: -2.7325554e-15}
rotation: {x: 0.0033531855, y: 0.0888791, z: -0.072216876, w: 0.99341536}
scale: {x: 1.0000001, y: 1.0000001, z: 1.0000001}
- name: RestOfFingers_Proximal_Right
parentName:
position: {x: -18.280209, y: -3.645552e-14, z: 1.8098782e-15}
rotation: {x: -0.0070367246, y: -0.038032945, z: 0.071951374, w: 0.99665797}
scale: {x: 1.0000002, y: 0.99999976, z: 1.0000001}
- name: RestOfFingers_Intermediate_Right
parentName:
position: {x: -8.7804575, y: 1.3120176e-14, z: -2.045785e-15}
rotation: {x: 0.000000031364543, y: -0.029668666, z: 0.00000009314987, w: 0.9995598}
scale: {x: 0.9999999, y: 0.9999998, z: 0.99999994}
- name: Index_Proximal_Right
parentName:
position: {x: -16.9013, y: -5.4614235e-14, z: -10.104266}
rotation: {x: -0.006792773, y: -0.04141134, z: 0.07197482, w: 0.9965233}
scale: {x: 1.0000001, y: 0.9999995, z: 0.99999994}
- name: Index_Intermediate_Right
parentName:
position: {x: -9.911691, y: 2.0547315e-15, z: -2.2696136e-15}
rotation: {x: 0.00000006863483, y: -0.026280055, z: 0.000000066069994, w: 0.9996546}
scale: {x: 0.9999999, y: 1.0000005, z: 1.0000002}
- name: Thumb_Proximal_Right
parentName:
position: {x: -7.0571103, y: -4.7085547, z: -9.280674}
rotation: {x: 0.06620009, y: -0.36255378, z: 0.15769039, w: 0.9161365}
scale: {x: 1.0000002, y: 0.99999976, z: 0.9999999}
- name: Thumb_Intermediate_Right
parentName:
position: {x: -10.653982, y: 2.4461068e-14, z: 1.7784693e-15}
rotation: {x: -0.03195776, y: 0.20743091, z: -0.13790223, w: 0.9679536}
scale: {x: 0.99999994, y: 0.9999999, z: 0.9999998}
- name: UpperLeg_Left
parentName:
position: {x: 3.5068195, y: -19.94618, z: -1.3763187}
rotation: {x: -0.24144138, y: -0.24064758, z: 0.94008315, w: 0.006198168}
scale: {x: 1.0000002, y: 1.0000004, z: 1}
- name: LowerLeg_Left
parentName:
position: {x: -32.81932, y: 2.1316282e-14, z: -8.881784e-15}
rotation: {x: -0.000059694055, y: -0.15989012, z: 0.025032662, w: 0.98681736}
scale: {x: 0.99999994, y: 0.99999976, z: 0.99999976}
- name: Foot_Left
parentName:
position: {x: -37.066936, y: -1.4210855e-14, z: -4.440892e-15}
rotation: {x: 0.31684923, y: 0.63952297, z: -0.10572273, w: 0.6924158}
scale: {x: 1.0000001, y: 0.99999994, z: 1.0000001}
- name: Toe_Left
parentName:
position: {x: -12.738982, y: -0.5618247, z: 0.30802163}
rotation: {x: 0.44987902, y: 0.113399684, z: -0.10218826, w: 0.8799471}
scale: {x: 1.0000001, y: 0.99999976, z: 1.0000001}
- name: Toetip_Left
parentName:
position: {x: -17.954567, y: -0.038039967, z: 0.4538383}
rotation: {x: 0.041624516, y: 0.030675909, z: -0.0034803369, w: 0.9986563}
scale: {x: 0.9999999, y: 1.0000002, z: 1}
- name: Shield
parentName:
position: {x: -36.94719, y: -62.859154, z: 21.787066}
rotation: {x: 1.5045698e-16, y: -0.16911028, z: -0.000000029802322, w: 0.98559713}
scale: {x: 1.0000002, y: 1.0000001, z: 0.9999999}
- name: Sword
parentName:
position: {x: -37.385925, y: 86.25157, z: 18.17991}
rotation: {x: 1.5045698e-16, y: -0.16911028, z: -0.000000029802322, w: 0.98559713}
scale: {x: 1.0000001, y: 1.0000002, z: 0.9999997}
- name: UpperLeg_Right
parentName:
position: {x: 3.5067785, y: 19.9462, z: -1.3763317}
rotation: {x: -0.008172602, y: 0.94522643, z: -0.21804802, w: 0.24276586}
scale: {x: 1.0000002, y: 1, z: 0.99999994}
- name: LowerLeg_Right
parentName:
position: {x: -32.819374, y: -1.0658141e-14, z: -3.5527137e-15}
rotation: {x: 0.000059738748, y: 0.15988989, z: 0.025033798, w: 0.98681736}
scale: {x: 1, y: 1.0000002, z: 1.0000004}
- name: Foot_Right
parentName:
position: {x: -37.066925, y: -3.5527137e-15, z: 2.7533531e-14}
rotation: {x: -0.26872012, y: -0.6451153, z: -0.057831265, w: 0.71293145}
scale: {x: 0.9999998, y: 0.99999994, z: 1.0000002}
- name: Toe_Right
parentName:
position: {x: -12.755086, y: -7.1054274e-15, z: -1.2434498e-14}
rotation: {x: -0.49754456, y: -0.11179102, z: -0.100894146, w: 0.8542673}
scale: {x: 0.99999994, y: 1, z: 0.9999999}
- name: Toetip_Right
parentName:
position: {x: -17.96039, y: 0, z: 3.5527137e-15}
rotation: {x: -0.056781534, y: -0.018067764, z: -0.0037393547, w: 0.99821615}
scale: {x: 1.0000001, y: 1, z: 1.0000002}
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 0
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 3
humanoidOversampling: 1
avatarSetup: 1
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,9 +0,0 @@
fileFormatVersion: 2
guid: 0f170503a39165f4faa3891b144780c8
folderAsset: yes
timeCreated: 1472891111
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,121 +0,0 @@
fileFormatVersion: 2
guid: 2007d7e43ac865b46a49d307a65e7420
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Standalone
maxTextureSize: 512
resizeAlgorithm: 0
textureFormat: 12
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Android
maxTextureSize: 512
resizeAlgorithm: 0
textureFormat: 47
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,121 +0,0 @@
fileFormatVersion: 2
guid: 155669a9b0a05114ca27956a712a7ed2
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 0
linearTexture: 1
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 1
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 1
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Standalone
maxTextureSize: 512
resizeAlgorithm: 0
textureFormat: 12
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Android
maxTextureSize: 512
resizeAlgorithm: 0
textureFormat: 47
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,9 +0,0 @@
fileFormatVersion: 2
guid: 0be7eff0bc9bbe54187f2a5e04ad8b62
folderAsset: yes
timeCreated: 1472891123
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,121 +0,0 @@
fileFormatVersion: 2
guid: 7b2f8bba9d28bd947899d272eb204b50
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Standalone
maxTextureSize: 512
resizeAlgorithm: 0
textureFormat: 12
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Android
maxTextureSize: 512
resizeAlgorithm: 0
textureFormat: 47
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,121 +0,0 @@
fileFormatVersion: 2
guid: d7e9e7f50b84b934993f51bd14182054
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Standalone
maxTextureSize: 512
resizeAlgorithm: 0
textureFormat: 12
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Android
maxTextureSize: 512
resizeAlgorithm: 0
textureFormat: 47
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,121 +0,0 @@
fileFormatVersion: 2
guid: 2664826f8af53dd489a6f8450583d6a5
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 0
linearTexture: 1
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 1
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 1
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Standalone
maxTextureSize: 512
resizeAlgorithm: 0
textureFormat: 12
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Android
maxTextureSize: 512
resizeAlgorithm: 0
textureFormat: 47
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

View File

@@ -1,96 +0,0 @@
fileFormatVersion: 2
guid: e77e0edc72ae9a04f9766e5685c9d929
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,57 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!687078895 &4343727234628468602
SpriteAtlas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: unityAtlas
serializedVersion: 2
m_EditorData:
serializedVersion: 2
textureSettings:
serializedVersion: 2
anisoLevel: 1
compressionQuality: 50
maxTextureSize: 2048
textureCompression: 0
filterMode: 1
generateMipMaps: 0
readable: 0
crunchedCompression: 0
sRGB: 1
platformSettings: []
packingSettings:
serializedVersion: 2
padding: 2
blockOffset: 1
allowAlphaSplitting: 0
enableRotation: 0
enableTightPacking: 0
secondaryTextureSettings: {}
variantMultiplier: 1
packables:
- {fileID: 102900000, guid: 29f27e4abf667c04b88a3996d8cdadfc, type: 3}
bindAsDefault: 1
isAtlasV2: 0
cachedData: {fileID: 0}
m_MasterAtlas: {fileID: 0}
m_PackedSprites:
- {fileID: 21300000, guid: 145b173105dad2d44a8c243a25f27147, type: 3}
- {fileID: 21300000, guid: e7478af3e19f2754186cf50b9fcc82aa, type: 3}
- {fileID: 21300000, guid: 9a4febb4946416146b75846aeffdee1a, type: 3}
- {fileID: 21300000, guid: 5cfcf3596b4cccc4f93e702d4336b816, type: 3}
- {fileID: 21300000, guid: 3ef466bedc075214ab47aa3289123438, type: 3}
- {fileID: 21300000, guid: 04285c1f1c3943b4c81187f40a31622d, type: 3}
m_PackedSpriteNamesToIndex:
- Icon_Arrows_128
- Icon_Shield_128
- Icon_Leafs_128
- Icon_Sword_128
- Icon_Fireball_128
- Icon_Deathkiss_128
m_RenderDataMap: {}
m_Tag: unityAtlas
m_IsVariant: 0
m_IsPlaceholder: 0

View File

@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: c069920bd183d6f4d9afb1a2a9c1f793
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,202 +0,0 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@@ -1,22 +0,0 @@
fileFormatVersion: 2
guid: 715939d12ae22b649b9f920fdc981c7c
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Roboto
fallbackFontReferences:
- {fileID: 12800000, guid: 61ff286c26f11d144b922e4ad92019cb, type: 3}
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,23 +0,0 @@
fileFormatVersion: 2
guid: 6307eaa6d82dc1d4f927c7ac03c547e3
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Roboto
fallbackFontReferences:
- {fileID: 12800000, guid: 61ff286c26f11d144b922e4ad92019cb, type: 3}
- {fileID: 12800000, guid: 715939d12ae22b649b9f920fdc981c7c, type: 3}
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,21 +0,0 @@
fileFormatVersion: 2
guid: 61ff286c26f11d144b922e4ad92019cb
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Roboto
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,25 +0,0 @@
fileFormatVersion: 2
guid: 35204a17be9c96649b254d2bad80f4dd
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Roboto
fallbackFontReferences:
- {fileID: 12800000, guid: d312f39baa1599f42b51aef5d287235b, type: 3}
- {fileID: 12800000, guid: 61ff286c26f11d144b922e4ad92019cb, type: 3}
- {fileID: 12800000, guid: 6307eaa6d82dc1d4f927c7ac03c547e3, type: 3}
- {fileID: 12800000, guid: 715939d12ae22b649b9f920fdc981c7c, type: 3}
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,24 +0,0 @@
fileFormatVersion: 2
guid: d312f39baa1599f42b51aef5d287235b
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Roboto
fallbackFontReferences:
- {fileID: 12800000, guid: 61ff286c26f11d144b922e4ad92019cb, type: 3}
- {fileID: 12800000, guid: 6307eaa6d82dc1d4f927c7ac03c547e3, type: 3}
- {fileID: 12800000, guid: 715939d12ae22b649b9f920fdc981c7c, type: 3}
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 44774abdee2b91b45b42f9dadf8c17a4
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1 +0,0 @@
raw file content 1

View File

@@ -1 +0,0 @@
raw file content 2

View File

@@ -1 +0,0 @@
raw file content 3

View File

@@ -1 +0,0 @@
raw file content 4

Some files were not shown because too many files have changed in this diff Show More