Compare commits

..

44 Commits

Author SHA1 Message Date
hevinci
5197d42807 Update CHANGELOG.md 2022-12-04 20:27:27 +08:00
hevinci
7a0f4caa9b Update package.json 2022-12-04 20:27:13 +08:00
hevinci
5bf1d29edc update utility 2022-12-04 20:14:02 +08:00
hevinci
2687466ed4 Update editor file 2022-12-03 23:16:39 +08:00
hevinci
14512d6470 Update samples 2022-12-03 23:16:16 +08:00
hevinci
32268f5a4a Update editor logic
资源收集界面规则选项显示别名
2022-12-03 23:16:04 +08:00
何冠峰
81401ca0b8 Merge pull request #53 from ZensYue/main
[add]Add ShowEditorAlias 添加显示编辑器名字
2022-12-03 20:12:31 +08:00
hevinci
688cc271d5 Update runtime logic
UpdatePackageVersionAsync()方法增加appendTimeTicks参数
2022-12-03 20:03:10 +08:00
hevinci
a290353cfa Update runtime logic
在初始化失败的时候,销毁YooAssets会报异常。
2022-12-03 19:48:17 +08:00
hevinci
6038e7acd6 Update asset system 2022-12-03 19:13:11 +08:00
何冠峰
4abec5a389 Merge pull request #52 from gaozhou/main
为handle 添加 using 支持
2022-12-03 19:00:44 +08:00
hevinci
a2b51a8044 Update samples 2022-12-03 18:49:05 +08:00
hevinci
19cb239746 Update logic code
优化补丁清单格式为二进制。
2022-12-03 18:48:51 +08:00
hevinci
7aab610be5 Add binary buffer class 2022-12-03 18:42:28 +08:00
hevinci
4ec5a126ac Remove BitMask files 2022-12-03 18:07:52 +08:00
zensyue
32643caf51 Merge pull request #1 from ZensYue/dev
Dev
2022-12-02 20:46:13 +08:00
ZensYue
114ebab6ae [bugfix]Convert the show name to the type name 把显示名字转换成类型名字 2022-12-02 20:39:28 +08:00
gaozhou
d1463e1fc6 为handle 添加 using 支持 2022-12-02 14:23:58 +08:00
ZensYue
aa49980231 [add]Add ShowEditorAlias 添加显示编辑器名字 2022-12-02 12:31:15 +08:00
hevinci
2696da092d update samples 2022-11-29 11:07:38 +08:00
hevinci
5415d95f36 Fix #46
修复资源包初始化失败之后,再次初始化提示异常的问题。
2022-11-29 11:06:24 +08:00
hevinci
efa71c8bb7 Update FAQ.md 2022-11-28 22:24:36 +08:00
hevinci
d59df4c561 update document 2022-11-27 15:40:09 +08:00
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
665 changed files with 136817 additions and 15642 deletions

View File

@@ -2,6 +2,44 @@
All notable changes to this package will be documented in this file.
## [1.4.0-preview] - 2022-12-04
### Fixed
- (#46)修复了资源包初始化失败之后,再次初始化发生异常的问题。
- 修复了在初始化失败的之后销毁YooAssets会报异常的问题。
### Changed
- 优化了资源收集界面,可以选择显示中文别名。
- **优化了补丁清单序列化方式,由文本数据修改为二进制数据。**
- 资源操作句柄增加using支持。
## [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

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;
@@ -21,7 +23,7 @@ namespace YooAsset.Editor
var buildResult = builder.Run(buildParameters);
if (buildResult.Success)
{
string manifestFileName = YooAssetSettingsData.GetPatchManifestFileName(buildParameters.PackageName, buildParameters.PackageVersion);
string manifestFileName = YooAssetSettingsData.GetPatchManifestBinaryFileName(buildParameters.PackageName, buildParameters.PackageVersion);
string manifestFilePath = $"{buildResult.OutputPackageDirectory}/{manifestFileName}";
return manifestFilePath;
}

View File

@@ -182,13 +182,14 @@ namespace YooAsset.Editor
/// </summary>
internal PatchBundle CreatePatchBundle()
{
string fileHash = PatchInfo.PatchFileHash;
string fileCRC = PatchInfo.PatchFileCRC;
long fileSize = PatchInfo.PatchFileSize;
bool isRawFile = IsRawFile;
byte loadMethod = (byte)LoadMethod;
string[] tags = GetBundleTags();
PatchBundle patchBundle = new PatchBundle(BundleName, fileHash, fileCRC, fileSize, isRawFile, loadMethod, tags);
PatchBundle patchBundle = new PatchBundle();
patchBundle.BundleName = BundleName;
patchBundle.FileHash = PatchInfo.PatchFileHash;
patchBundle.FileCRC = PatchInfo.PatchFileCRC;
patchBundle.FileSize = PatchInfo.PatchFileSize;
patchBundle.IsRawFile = IsRawFile;
patchBundle.LoadMethod = (byte)LoadMethod;
patchBundle.Tags = GetBundleTags();
return patchBundle;
}
}

View File

@@ -45,7 +45,7 @@ namespace YooAsset.Editor
// 拷贝补丁清单文件
{
string fileName = YooAssetSettingsData.GetPatchManifestFileName(buildPackageName, buildPackageVersion);
string fileName = YooAssetSettingsData.GetPatchManifestBinaryFileName(buildPackageName, buildPackageVersion);
string sourcePath = $"{packageOutputDirectory}/{fileName}";
string destPath = $"{streamingAssetsDirectory}/{fileName}";
EditorTools.CopyFile(sourcePath, destPath, true);

View File

@@ -51,18 +51,26 @@ namespace YooAsset.Editor
}
}
// 创建补丁清单文件
// 创建补丁清单文本文
{
string fileName = YooAssetSettingsData.GetPatchManifestJsonFileName(buildParameters.PackageName, buildParameters.PackageVersion);
string filePath = $"{packageOutputDirectory}/{fileName}";
PatchManifest.SerializeToJson(filePath, patchManifest);
BuildRunner.Log($"创建补丁清单文件:{filePath}");
}
// 创建补丁清单二进制文件
string packageHash;
{
string fileName = YooAssetSettingsData.GetPatchManifestFileName(buildParameters.PackageName, buildParameters.PackageVersion);
string fileName = YooAssetSettingsData.GetPatchManifestBinaryFileName(buildParameters.PackageName, buildParameters.PackageVersion);
string filePath = $"{packageOutputDirectory}/{fileName}";
PatchManifest.Serialize(filePath, patchManifest);
PatchManifest.SerializeToBinary(filePath, patchManifest);
packageHash = HashUtility.FileMD5(filePath);
BuildRunner.Log($"创建补丁清单文件:{filePath}");
var patchManifestContext = new PatchManifestContext();
string jsonData = FileUtility.ReadFile(filePath);
patchManifestContext.Manifest = PatchManifest.Deserialize(jsonData);
PatchManifestContext patchManifestContext = new PatchManifestContext();
byte[] bytesData = FileUtility.ReadAllBytes(filePath);
patchManifestContext.Manifest = PatchManifest.DeserializeFromBinary(bytesData);
context.SetContextObject(patchManifestContext);
}

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

@@ -10,13 +10,14 @@ namespace YooAsset.Editor
{
public class AssetBundleCollectorConfig
{
public const string ConfigVersion = "2.1";
public const string ConfigVersion = "2.2";
public const string XmlVersion = "Version";
public const string XmlCommon = "Common";
public const string XmlEnableAddressable = "AutoAddressable";
public const string XmlUniqueBundleName = "UniqueBundleName";
public const string XmlShowPackageView = "ShowPackageView";
public const string XmlShowEditorAlias = "ShowEditorAlias";
public const string XmlPackage = "Package";
public const string XmlPackageName = "PackageName";
@@ -65,6 +66,7 @@ namespace YooAsset.Editor
bool enableAddressable = false;
bool uniqueBundleName = false;
bool showPackageView = false;
bool showEditorAlias = false;
var commonNodeList = root.GetElementsByTagName(XmlCommon);
if (commonNodeList.Count > 0)
{
@@ -75,10 +77,13 @@ namespace YooAsset.Editor
throw new Exception($"Not found attribute {XmlUniqueBundleName} in {XmlCommon}");
if (commonElement.HasAttribute(XmlShowPackageView) == false)
throw new Exception($"Not found attribute {XmlShowPackageView} in {XmlCommon}");
if (commonElement.HasAttribute(XmlShowEditorAlias) == false)
throw new Exception($"Not found attribute {XmlShowEditorAlias} in {XmlCommon}");
enableAddressable = commonElement.GetAttribute(XmlEnableAddressable) == "True" ? true : false;
uniqueBundleName = commonElement.GetAttribute(XmlUniqueBundleName) == "True" ? true : false;
showPackageView = commonElement.GetAttribute(XmlShowPackageView) == "True" ? true : false;
showEditorAlias = commonElement.GetAttribute(XmlShowEditorAlias) == "True" ? true : false;
}
// 读取包裹配置
@@ -153,6 +158,7 @@ namespace YooAsset.Editor
AssetBundleCollectorSettingData.Setting.EnableAddressable = enableAddressable;
AssetBundleCollectorSettingData.Setting.UniqueBundleName = uniqueBundleName;
AssetBundleCollectorSettingData.Setting.ShowPackageView = showPackageView;
AssetBundleCollectorSettingData.Setting.ShowEditorAlias = showEditorAlias;
AssetBundleCollectorSettingData.Setting.Packages.AddRange(packages);
AssetBundleCollectorSettingData.SaveFile();
Debug.Log($"导入配置完毕!");
@@ -183,6 +189,7 @@ namespace YooAsset.Editor
commonElement.SetAttribute(XmlEnableAddressable, AssetBundleCollectorSettingData.Setting.EnableAddressable.ToString());
commonElement.SetAttribute(XmlUniqueBundleName, AssetBundleCollectorSettingData.Setting.UniqueBundleName.ToString());
commonElement.SetAttribute(XmlShowPackageView, AssetBundleCollectorSettingData.Setting.ShowPackageView.ToString());
commonElement.SetAttribute(XmlShowEditorAlias, AssetBundleCollectorSettingData.Setting.ShowEditorAlias.ToString());
root.AppendChild(commonElement);
// 设置Package配置
@@ -296,6 +303,23 @@ namespace YooAsset.Editor
return UpdateXmlConfig(xmlDoc);
}
// 2.1 -> 2.2
if (configVersion == "2.1")
{
// 添加公共元素属性
var commonNodeList = root.GetElementsByTagName(XmlCommon);
if (commonNodeList.Count > 0)
{
XmlElement commonElement = commonNodeList[0] as XmlElement;
if (commonElement.HasAttribute(XmlShowEditorAlias) == false)
commonElement.SetAttribute(XmlShowEditorAlias, "False");
}
// 更新版本
root.SetAttribute(XmlVersion, "2.2");
return UpdateXmlConfig(xmlDoc);
}
return false;
}
}

View File

@@ -23,6 +23,12 @@ namespace YooAsset.Editor
/// </summary>
public bool UniqueBundleName = false;
/// <summary>
/// 是否显示编辑器别名
/// </summary>
public bool ShowEditorAlias = false;
/// <summary>
/// 包裹列表
/// </summary>

View File

@@ -38,92 +38,6 @@ namespace YooAsset.Editor
}
}
public static List<string> GetActiveRuleNames()
{
if (_setting == null)
LoadSettingData();
List<string> names = new List<string>();
foreach (var pair in _cacheActiveRuleTypes)
{
names.Add(pair.Key);
}
return names;
}
public static List<string> GetAddressRuleNames()
{
if (_setting == null)
LoadSettingData();
List<string> names = new List<string>();
foreach (var pair in _cacheAddressRuleTypes)
{
names.Add(pair.Key);
}
return names;
}
public static List<string> GetPackRuleNames()
{
if (_setting == null)
LoadSettingData();
List<string> names = new List<string>();
foreach (var pair in _cachePackRuleTypes)
{
names.Add(pair.Key);
}
return names;
}
public static List<string> GetFilterRuleNames()
{
if (_setting == null)
LoadSettingData();
List<string> names = new List<string>();
foreach (var pair in _cacheFilterRuleTypes)
{
names.Add(pair.Key);
}
return names;
}
public static bool HasActiveRuleName(string ruleName)
{
foreach (var pair in _cacheActiveRuleTypes)
{
if (pair.Key == ruleName)
return true;
}
return false;
}
public static bool HasAddressRuleName(string ruleName)
{
foreach (var pair in _cacheAddressRuleTypes)
{
if (pair.Key == ruleName)
return true;
}
return false;
}
public static bool HasPackRuleName(string ruleName)
{
foreach (var pair in _cachePackRuleTypes)
{
if (pair.Key == ruleName)
return true;
}
return false;
}
public static bool HasFilterRuleName(string ruleName)
{
foreach (var pair in _cacheFilterRuleTypes)
{
if (pair.Key == ruleName)
return true;
}
return false;
}
/// <summary>
/// 加载配置文件
/// </summary>
@@ -146,6 +60,7 @@ namespace YooAsset.Editor
typeof(PackCollector),
typeof(PackGroup),
typeof(PackRawFile),
typeof(PackShaderVariants)
};
var customTypes = EditorTools.GetAssignableTypes(typeof(IPackRule));
@@ -266,7 +181,92 @@ namespace YooAsset.Editor
SaveFile();
}
// 实例类相关
public static List<RuleDisplayName> GetActiveRuleNames()
{
if (_setting == null)
LoadSettingData();
List<RuleDisplayName> names = new List<RuleDisplayName>();
foreach (var pair in _cacheActiveRuleTypes)
{
RuleDisplayName ruleName = new RuleDisplayName();
ruleName.ClassName = pair.Key;
ruleName.DisplayName = GetRuleDisplayName(pair.Key, pair.Value);
names.Add(ruleName);
}
return names;
}
public static List<RuleDisplayName> GetAddressRuleNames()
{
if (_setting == null)
LoadSettingData();
List<RuleDisplayName> names = new List<RuleDisplayName>();
foreach (var pair in _cacheAddressRuleTypes)
{
RuleDisplayName ruleName = new RuleDisplayName();
ruleName.ClassName = pair.Key;
ruleName.DisplayName = GetRuleDisplayName(pair.Key, pair.Value);
names.Add(ruleName);
}
return names;
}
public static List<RuleDisplayName> GetPackRuleNames()
{
if (_setting == null)
LoadSettingData();
List<RuleDisplayName> names = new List<RuleDisplayName>();
foreach (var pair in _cachePackRuleTypes)
{
RuleDisplayName ruleName = new RuleDisplayName();
ruleName.ClassName = pair.Key;
ruleName.DisplayName = GetRuleDisplayName(pair.Key, pair.Value);
names.Add(ruleName);
}
return names;
}
public static List<RuleDisplayName> GetFilterRuleNames()
{
if (_setting == null)
LoadSettingData();
List<RuleDisplayName> names = new List<RuleDisplayName>();
foreach (var pair in _cacheFilterRuleTypes)
{
RuleDisplayName ruleName = new RuleDisplayName();
ruleName.ClassName = pair.Key;
ruleName.DisplayName = GetRuleDisplayName(pair.Key, pair.Value);
names.Add(ruleName);
}
return names;
}
private static string GetRuleDisplayName(string name, Type type)
{
var attribute = EditorAttribute.GetAttribute<DisplayNameAttribute>(type);
if (attribute != null && string.IsNullOrEmpty(attribute.DisplayName) == false)
return attribute.DisplayName;
else
return name;
}
public static bool HasActiveRuleName(string ruleName)
{
return _cacheActiveRuleTypes.Keys.Contains(ruleName);
}
public static bool HasAddressRuleName(string ruleName)
{
return _cacheAddressRuleTypes.Keys.Contains(ruleName);
}
public static bool HasPackRuleName(string ruleName)
{
return _cachePackRuleTypes.Keys.Contains(ruleName);
}
public static bool HasFilterRuleName(string ruleName)
{
return _cacheFilterRuleTypes.Keys.Contains(ruleName);
}
public static IActiveRule GetActiveRuleInstance(string ruleName)
{
if (_cacheActiveRuleInstance.TryGetValue(ruleName, out IActiveRule instance))
@@ -352,6 +352,11 @@ namespace YooAsset.Editor
Setting.UniqueBundleName = uniqueBundleName;
IsDirty = true;
}
public static void ModifyShowEditorAlias(bool showAlias)
{
Setting.ShowEditorAlias = showAlias;
IsDirty = true;
}
// 资源包裹编辑相关
public static AssetBundleCollectorPackage CreatePackage(string packageName)

View File

@@ -20,14 +20,15 @@ namespace YooAsset.Editor
private Button _saveButton;
private List<string> _collectorTypeList;
private List<string> _activeRuleList;
private List<string> _addressRuleList;
private List<string> _packRuleList;
private List<string> _filterRuleList;
private List<RuleDisplayName> _activeRuleList;
private List<RuleDisplayName> _addressRuleList;
private List<RuleDisplayName> _packRuleList;
private List<RuleDisplayName> _filterRuleList;
private Toggle _showPackageToogle;
private Toggle _enableAddressableToogle;
private Toggle _uniqueBundleNameToogle;
private Toggle _showEditorAliasToggle;
private VisualElement _packageContainer;
private ListView _packageListView;
@@ -42,7 +43,7 @@ namespace YooAsset.Editor
private VisualElement _collectorContainer;
private ScrollView _collectorScrollView;
private PopupField<string> _activeRulePopupField;
private PopupField<RuleDisplayName> _activeRulePopupField;
private int _lastModifyPackageIndex = 0;
private int _lastModifyGroupIndex = 0;
@@ -95,6 +96,13 @@ namespace YooAsset.Editor
RefreshWindow();
});
_showEditorAliasToggle = root.Q<Toggle>("ShowEditorAlias");
_showEditorAliasToggle.RegisterValueChangedCallback(evt =>
{
AssetBundleCollectorSettingData.ModifyShowEditorAlias(evt.newValue);
RefreshWindow();
});
// 配置修复按钮
var fixBtn = root.Q<Button>("FixButton");
fixBtn.clicked += FixBtn_clicked;
@@ -236,21 +244,23 @@ namespace YooAsset.Editor
// 分组激活规则
var activeRuleContainer = root.Q("ActiveRuleContainer");
{
_activeRulePopupField = new PopupField<string>("Active Rule", _activeRuleList, 0);
_activeRulePopupField = new PopupField<RuleDisplayName>("Active Rule", _activeRuleList, 0);
_activeRulePopupField.name = "ActiveRuleMaskField";
_activeRulePopupField.style.unityTextAlign = TextAnchor.MiddleLeft;
activeRuleContainer.Add(_activeRulePopupField);
_activeRulePopupField.formatListItemCallback = FormatListItemCallback;
_activeRulePopupField.formatSelectedValueCallback = FormatSelectedValueCallback;
_activeRulePopupField.RegisterValueChangedCallback(evt =>
{
var selectPackage = _packageListView.selectedItem as AssetBundleCollectorPackage;
var selectGroup = _groupListView.selectedItem as AssetBundleCollectorGroup;
if (selectPackage != null && selectGroup != null)
{
selectGroup.ActiveRuleName = evt.newValue;
selectGroup.ActiveRuleName = evt.newValue.ClassName;
AssetBundleCollectorSettingData.ModifyGroup(selectPackage, selectGroup);
FillGroupViewData();
}
});
activeRuleContainer.Add(_activeRulePopupField);
}
// 刷新窗体
@@ -290,6 +300,9 @@ namespace YooAsset.Editor
{
_showPackageToogle.SetValueWithoutNotify(AssetBundleCollectorSettingData.Setting.ShowPackageView);
_enableAddressableToogle.SetValueWithoutNotify(AssetBundleCollectorSettingData.Setting.EnableAddressable);
_uniqueBundleNameToogle.SetValueWithoutNotify(AssetBundleCollectorSettingData.Setting.UniqueBundleName);
_showEditorAliasToggle.SetValueWithoutNotify(AssetBundleCollectorSettingData.Setting.ShowEditorAlias);
_groupContainer.visible = false;
_collectorContainer.visible = false;
@@ -321,6 +334,20 @@ namespace YooAsset.Editor
{
AssetBundleCollectorSettingData.SaveFile();
}
private string FormatListItemCallback(RuleDisplayName ruleDisplayName)
{
if (_showEditorAliasToggle.value)
return ruleDisplayName.DisplayName;
else
return ruleDisplayName.ClassName;
}
private string FormatSelectedValueCallback(RuleDisplayName ruleDisplayName)
{
if (_showEditorAliasToggle.value)
return ruleDisplayName.DisplayName;
else
return ruleDisplayName.ClassName;
}
// 包裹列表相关
private void FillPackageViewData()
@@ -334,7 +361,7 @@ namespace YooAsset.Editor
{
_packageListView.selectedIndex = _lastModifyPackageIndex;
}
if (_showPackageToogle.value)
_packageContainer.style.display = DisplayStyle.Flex;
else
@@ -410,7 +437,7 @@ namespace YooAsset.Editor
_groupListView.itemsSource = selectPackage.Groups;
_groupListView.Rebuild();
if(_lastModifyGroupIndex >=0 && _lastModifyGroupIndex < _groupListView.itemsSource.Count)
if (_lastModifyGroupIndex >= 0 && _lastModifyGroupIndex < _groupListView.itemsSource.Count)
{
_groupListView.selectedIndex = _lastModifyGroupIndex;
}
@@ -460,7 +487,7 @@ namespace YooAsset.Editor
_collectorContainer.visible = true;
_lastModifyGroupIndex = _groupListView.selectedIndex;
_activeRulePopupField.SetValueWithoutNotify(selectGroup.ActiveRuleName);
_activeRulePopupField.SetValueWithoutNotify(GetActiveRuleIndex(selectGroup.ActiveRuleName));
_groupNameTxt.SetValueWithoutNotify(selectGroup.GroupName);
_groupDescTxt.SetValueWithoutNotify(selectGroup.GroupDesc);
_groupAssetTagsTxt.SetValueWithoutNotify(selectGroup.AssetTags);
@@ -564,21 +591,21 @@ namespace YooAsset.Editor
}
if (_enableAddressableToogle.value)
{
var popupField = new PopupField<string>(_addressRuleList, 0);
var popupField = new PopupField<RuleDisplayName>(_addressRuleList, 0);
popupField.name = "PopupField1";
popupField.style.unityTextAlign = TextAnchor.MiddleLeft;
popupField.style.width = 200;
elementBottom.Add(popupField);
}
{
var popupField = new PopupField<string>(_packRuleList, 0);
var popupField = new PopupField<RuleDisplayName>(_packRuleList, 0);
popupField.name = "PopupField2";
popupField.style.unityTextAlign = TextAnchor.MiddleLeft;
popupField.style.width = 150;
popupField.style.width = 230;
elementBottom.Add(popupField);
}
{
var popupField = new PopupField<string>(_filterRuleList, 0);
var popupField = new PopupField<RuleDisplayName>(_filterRuleList, 0);
popupField.name = "PopupField3";
popupField.style.unityTextAlign = TextAnchor.MiddleLeft;
popupField.style.width = 150;
@@ -676,13 +703,15 @@ namespace YooAsset.Editor
});
// Address Rule
var popupField1 = element.Q<PopupField<string>>("PopupField1");
var popupField1 = element.Q<PopupField<RuleDisplayName>>("PopupField1");
if (popupField1 != null)
{
popupField1.index = GetAddressRuleIndex(collector.AddressRuleName);
popupField1.formatListItemCallback = FormatListItemCallback;
popupField1.formatSelectedValueCallback = FormatSelectedValueCallback;
popupField1.RegisterValueChangedCallback(evt =>
{
collector.AddressRuleName = evt.newValue;
collector.AddressRuleName = evt.newValue.ClassName;
AssetBundleCollectorSettingData.ModifyCollector(selectGroup, collector);
if (foldout.value)
{
@@ -692,11 +721,13 @@ namespace YooAsset.Editor
}
// Pack Rule
var popupField2 = element.Q<PopupField<string>>("PopupField2");
var popupField2 = element.Q<PopupField<RuleDisplayName>>("PopupField2");
popupField2.index = GetPackRuleIndex(collector.PackRuleName);
popupField2.formatListItemCallback = FormatListItemCallback;
popupField2.formatSelectedValueCallback = FormatSelectedValueCallback;
popupField2.RegisterValueChangedCallback(evt =>
{
collector.PackRuleName = evt.newValue;
collector.PackRuleName = evt.newValue.ClassName;
AssetBundleCollectorSettingData.ModifyCollector(selectGroup, collector);
if (foldout.value)
{
@@ -705,11 +736,13 @@ namespace YooAsset.Editor
});
// Filter Rule
var popupField3 = element.Q<PopupField<string>>("PopupField3");
var popupField3 = element.Q<PopupField<RuleDisplayName>>("PopupField3");
popupField3.index = GetFilterRuleIndex(collector.FilterRuleName);
popupField3.formatListItemCallback = FormatListItemCallback;
popupField3.formatSelectedValueCallback = FormatSelectedValueCallback;
popupField3.RegisterValueChangedCallback(evt =>
{
collector.FilterRuleName = evt.newValue;
collector.FilterRuleName = evt.newValue.ClassName;
AssetBundleCollectorSettingData.ModifyCollector(selectGroup, collector);
if (foldout.value)
{
@@ -815,7 +848,7 @@ namespace YooAsset.Editor
{
for (int i = 0; i < _addressRuleList.Count; i++)
{
if (_addressRuleList[i] == ruleName)
if (_addressRuleList[i].ClassName == ruleName)
return i;
}
return 0;
@@ -824,7 +857,7 @@ namespace YooAsset.Editor
{
for (int i = 0; i < _packRuleList.Count; i++)
{
if (_packRuleList[i] == ruleName)
if (_packRuleList[i].ClassName == ruleName)
return i;
}
return 0;
@@ -833,11 +866,20 @@ namespace YooAsset.Editor
{
for (int i = 0; i < _filterRuleList.Count; i++)
{
if (_filterRuleList[i] == ruleName)
if (_filterRuleList[i].ClassName == ruleName)
return i;
}
return 0;
}
private RuleDisplayName GetActiveRuleIndex(string ruleName)
{
for (int i = 0; i < _activeRuleList.Count; i++)
{
if (_activeRuleList[i].ClassName == ruleName)
return _activeRuleList[i];
}
return _activeRuleList[0];
}
}
}
#endif

View File

@@ -1,4 +1,4 @@
<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" xsi="http://www.w3.org/2001/XMLSchema-instance" engine="UnityEngine.UIElements" editor="UnityEditor.UIElements" noNamespaceSchemaLocation="../../UIElementsSchema/UIElements.xsd" editor-extension-mode="True">
<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements">
<uie:Toolbar name="Toolbar" style="display: flex; flex-direction: row-reverse;">
<ui:Button text="Save" display-tooltip-when-elided="true" name="SaveButton" style="width: 50px; background-color: rgb(56, 147, 58);" />
<ui:Button text="导出" display-tooltip-when-elided="true" name="ExportButton" style="width: 50px; background-color: rgb(56, 147, 58);" />
@@ -7,6 +7,7 @@
</uie:Toolbar>
<ui:VisualElement name="PublicContainer" style="height: 30px; background-color: rgb(67, 67, 67); flex-direction: row; border-left-width: 5px; border-right-width: 5px; border-top-width: 5px; border-bottom-width: 5px;">
<ui:Toggle label="Show Packages" name="ShowPackages" style="width: 196px; -unity-text-align: middle-left;" />
<ui:Toggle label="Show Editor Alias" name="ShowEditorAlias" style="width: 196px; -unity-text-align: middle-left;" />
<ui:Toggle label="Enable Addressable" name="EnableAddressable" style="width: 196px; -unity-text-align: middle-left;" />
<ui:Toggle label="Unique Bundle Name" name="UniqueBundleName" style="width: 196px; -unity-text-align: middle-left;" />
</ui:VisualElement>

View File

@@ -1,9 +1,7 @@

namespace YooAsset.Editor
{
/// <summary>
/// 启用分组
/// </summary>
[DisplayName("启用分组")]
public class EnableGroup : IActiveRule
{
public bool IsActiveGroup()
@@ -12,9 +10,7 @@ namespace YooAsset.Editor
}
}
/// <summary>
/// 禁用分组
/// </summary>
[DisplayName("禁用分组")]
public class DisableGroup : IActiveRule
{
public bool IsActiveGroup()

View File

@@ -2,9 +2,7 @@
namespace YooAsset.Editor
{
/// <summary>
/// 以文件名为定位地址
/// </summary>
[DisplayName("以文件名称为定位地址")]
public class AddressByFileName : IAddressRule
{
string IAddressRule.GetAssetAddress(AddressRuleData data)
@@ -13,9 +11,7 @@ namespace YooAsset.Editor
}
}
/// <summary>
/// 以组名+文件名为定位地址
/// </summary>
[DisplayName("以分组名称+文件名称为定位地址")]
public class AddressByGroupAndFileName : IAddressRule
{
string IAddressRule.GetAssetAddress(AddressRuleData data)
@@ -25,9 +21,7 @@ namespace YooAsset.Editor
}
}
/// <summary>
/// 以收集器名+文件名为定位地址
/// </summary>
[DisplayName("以收集器名称+文件名称为定位地址")]
public class AddressByCollectorAndFileName : IAddressRule
{
string IAddressRule.GetAssetAddress(AddressRuleData data)

View File

@@ -4,9 +4,7 @@ using System.IO;
namespace YooAsset.Editor
{
/// <summary>
/// 收集所有资源
/// </summary>
[DisplayName("收集所有资源")]
public class CollectAll : IFilterRule
{
public bool IsCollectAsset(FilterRuleData data)
@@ -15,9 +13,7 @@ namespace YooAsset.Editor
}
}
/// <summary>
/// 只收集场景
/// </summary>
[DisplayName("收集场景")]
public class CollectScene : IFilterRule
{
public bool IsCollectAsset(FilterRuleData data)
@@ -25,10 +21,8 @@ namespace YooAsset.Editor
return Path.GetExtension(data.AssetPath) == ".unity";
}
}
/// <summary>
/// 只收集预制体
/// </summary>
[DisplayName("收集预制体")]
public class CollectPrefab : IFilterRule
{
public bool IsCollectAsset(FilterRuleData data)
@@ -37,15 +31,13 @@ namespace YooAsset.Editor
}
}
/// <summary>
/// 只收集精灵类型的资源
/// </summary>
[DisplayName("收集精灵类型的纹理")]
public class CollectSprite : IFilterRule
{
public bool IsCollectAsset(FilterRuleData data)
{
var mainAssetType = AssetDatabase.GetMainAssetTypeAtPath(data.AssetPath);
if(mainAssetType == typeof(Texture2D))
if (mainAssetType == typeof(Texture2D))
{
var texImporter = AssetImporter.GetAtPath(data.AssetPath) as TextureImporter;
if (texImporter != null && texImporter.textureType == TextureImporterType.Sprite)
@@ -60,9 +52,7 @@ namespace YooAsset.Editor
}
}
/// <summary>
/// 只收集着色器变种收集文件
/// </summary>
[DisplayName("收集着色器变种集合")]
public class CollectShaderVariants : IFilterRule
{
public bool IsCollectAsset(FilterRuleData data)

View File

@@ -10,6 +10,7 @@ namespace YooAsset.Editor
/// 例如:"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>
[DisplayName("以文件路径作为资源包名")]
public class PackSeparately : IPackRule
{
string IPackRule.GetBundleName(PackRuleData data)
@@ -25,6 +26,7 @@ namespace YooAsset.Editor
/// 例如:"Assets/UIPanel/Shop/Image/backgroud.png" --> "assets_uipanel_shop_image.bundle"
/// 例如:"Assets/UIPanel/Shop/View/main.prefab" --> "assets_uipanel_shop_view.bundle"
/// </summary>
[DisplayName("以父类文件夹路径作为资源包名")]
public class PackDirectory : IPackRule
{
public static PackDirectory StaticPackRule = new PackDirectory();
@@ -43,6 +45,7 @@ namespace YooAsset.Editor
/// 例如:"Assets/UIPanel/Shop/Image/backgroud.png" --> "assets_uipanel_shop.bundle"
/// 例如:"Assets/UIPanel/Shop/View/main.prefab" --> "assets_uipanel_shop.bundle"
/// </summary>
[DisplayName("以收集器路径下顶级文件夹为资源包名")]
public class PackTopDirectory : IPackRule
{
string IPackRule.GetBundleName(PackRuleData data)
@@ -68,6 +71,7 @@ namespace YooAsset.Editor
/// 以收集器路径作为资源包名
/// 注意:收集的所有文件打进一个资源包
/// </summary>
[DisplayName("以收集器路径作为资源包名")]
public class PackCollector : IPackRule
{
string IPackRule.GetBundleName(PackRuleData data)
@@ -90,6 +94,7 @@ namespace YooAsset.Editor
/// 以分组名称作为资源包名
/// 注意:收集的所有文件打进一个资源包
/// </summary>
[DisplayName("以分组名称作为资源包名")]
public class PackGroup : IPackRule
{
string IPackRule.GetBundleName(PackRuleData data)
@@ -99,9 +104,10 @@ namespace YooAsset.Editor
}
/// <summary>
/// 原生文件打包模式
/// 打包原生文件
/// 注意:原生文件打包支持:图片,音频,视频,文本
/// </summary>
[DisplayName("打包原生文件")]
public class PackRawFile : IPackRule
{
string IPackRule.GetBundleName(PackRuleData data)
@@ -120,14 +126,15 @@ 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('.', '_');
}
}
/// <summary>
/// 着色器变种收集文件
/// 打包着色器变种集合
/// </summary>
[DisplayName("打包着色器变种集合")]
public class PackShaderVariants : IPackRule
{
public string GetBundleName(PackRuleData data)

View File

@@ -0,0 +1,9 @@

namespace YooAsset.Editor
{
public class RuleDisplayName
{
public string ClassName;
public string DisplayName;
}
}

View File

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

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)BundleLoaderBase.EStatus.Failed)
if (bundleInfo.Status == BundleLoaderBase.EStatus.Failed.ToString())
textColor = new StyleColor(Color.yellow);
else
textColor = label1.style.color;

View File

@@ -109,7 +109,7 @@ namespace YooAsset.Editor
return;
_reportFilePath = selectFilePath;
string jsonData = FileUtility.ReadFile(_reportFilePath);
string jsonData = FileUtility.ReadAllText(_reportFilePath);
_buildReport = BuildReport.Deserialize(jsonData);
_assetListViewer.FillViewData(_buildReport, _searchKeyWord);
_bundleListViewer.FillViewData(_buildReport, _reportFilePath, _searchKeyWord);

View File

@@ -0,0 +1,36 @@
using System;
using System.Reflection;
namespace YooAsset.Editor
{
/// <summary>
/// 编辑器显示名字
/// </summary>
public class DisplayNameAttribute : Attribute
{
public string DisplayName;
public DisplayNameAttribute(string name)
{
this.DisplayName = name;
}
}
public static class EditorAttribute
{
internal static T GetAttribute<T>(Type type) where T : Attribute
{
return (T)type.GetCustomAttribute(typeof(T), false);
}
internal static T GetAttribute<T>(MethodInfo methodInfo) where T : Attribute
{
return (T)methodInfo.GetCustomAttribute(typeof(T), false);
}
internal static T GetAttribute<T>(FieldInfo field) where T : Attribute
{
return (T)field.GetCustomAttribute(typeof(T), false);
}
}
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 60c7594328ef976408edadfdf2b9aa3d
guid: 92d5f73b21059af43b7f56165b7acd63
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -73,15 +73,15 @@ namespace YooAsset
{
provider.Destroy();
}
_providers.Clear();
foreach (var loader in _loaders)
{
loader.Destroy(true);
}
_providers.Clear();
_loaders.Clear();
ClearSceneHandle();
ClearSceneHandle();
DecryptionServices = null;
BundleServices = null;
}
@@ -90,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)
{
@@ -289,19 +298,21 @@ namespace YooAsset
internal void ClearSceneHandle()
{
// 释放资源包下的所有场景
string packageName = BundleServices.GetPackageName();
List<string> removeList = new List<string>();
foreach (var valuePair in _sceneHandles)
if (BundleServices.IsServicesValid())
{
if (valuePair.Value.PackageName == packageName)
string packageName = BundleServices.GetPackageName();
List<string> removeList = new List<string>();
foreach (var valuePair in _sceneHandles)
{
removeList.Add(valuePair.Key);
if (valuePair.Value.PackageName == packageName)
{
removeList.Add(valuePair.Key);
}
}
foreach (var key in removeList)
{
_sceneHandles.Remove(key);
}
}
foreach (var key in removeList)
{
_sceneHandles.Remove(key);
}
}
@@ -390,7 +401,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

@@ -1,9 +1,10 @@
using UnityEngine;
using System;
using System.Collections.Generic;
using UnityEngine;
namespace YooAsset
{
public sealed class AssetOperationHandle : OperationHandleBase
public sealed class AssetOperationHandle : OperationHandleBase, IDisposable
{
private System.Action<AssetOperationHandle> _callback;
@@ -22,7 +23,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,42 +32,18 @@ namespace YooAsset
}
remove
{
if (IsValid == false)
if (IsValidWithWarning == false)
throw new System.Exception($"{nameof(AssetOperationHandle)} is invalid");
_callback -= value;
}
}
/// <summary>
/// 资源对象
/// </summary>
public UnityEngine.Object AssetObject
{
get
{
if (IsValid == false)
return null;
return Provider.AssetObject;
}
}
/// <summary>
/// 获取资源对象
/// </summary>
/// <typeparam name="TAsset">资源类型</typeparam>
public TAsset GetAssetObject<TAsset>() where TAsset : UnityEngine.Object
{
if (IsValid == false)
return null;
return Provider.AssetObject as TAsset;
}
/// <summary>
/// 等待异步执行完毕
/// </summary>
public void WaitForAsyncComplete()
{
if (IsValid == false)
if (IsValidWithWarning == false)
return;
Provider.WaitForAsyncComplete();
}
@@ -79,6 +56,38 @@ namespace YooAsset
this.ReleaseInternal();
}
/// <summary>
/// 释放资源句柄
/// </summary>
public void Dispose()
{
this.ReleaseInternal();
}
/// <summary>
/// 资源对象
/// </summary>
public UnityEngine.Object AssetObject
{
get
{
if (IsValidWithWarning == false)
return null;
return Provider.AssetObject;
}
}
/// <summary>
/// 获取资源对象
/// </summary>
/// <typeparam name="TAsset">资源类型</typeparam>
public TAsset GetAssetObject<TAsset>() where TAsset : UnityEngine.Object
{
if (IsValidWithWarning == false)
return null;
return Provider.AssetObject as TAsset;
}
/// <summary>
/// 同步初始化游戏对象
@@ -124,7 +133,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

@@ -1,4 +1,5 @@
using System.Collections;
using System;
using System.Collections;
namespace YooAsset
{
@@ -14,7 +15,6 @@ namespace YooAsset
}
internal abstract void InvokeCallback();
/// <summary>
/// 获取资源信息
/// </summary>
@@ -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

@@ -1,9 +1,10 @@
using System.IO;
using System;
using System.IO;
using System.Text;
namespace YooAsset
{
public class RawFileOperationHandle : OperationHandleBase
public class RawFileOperationHandle : OperationHandleBase, IDisposable
{
private System.Action<RawFileOperationHandle> _callback;
@@ -22,7 +23,7 @@ namespace YooAsset
{
add
{
if (IsValid == false)
if (IsValidWithWarning == false)
throw new System.Exception($"{nameof(RawFileOperationHandle)} is invalid");
if (Provider.IsDone)
value.Invoke(this);
@@ -31,7 +32,7 @@ namespace YooAsset
}
remove
{
if (IsValid == false)
if (IsValidWithWarning == false)
throw new System.Exception($"{nameof(RawFileOperationHandle)} is invalid");
_callback -= value;
}
@@ -42,7 +43,7 @@ namespace YooAsset
/// </summary>
public void WaitForAsyncComplete()
{
if (IsValid == false)
if (IsValidWithWarning == false)
return;
Provider.WaitForAsyncComplete();
}
@@ -54,14 +55,22 @@ namespace YooAsset
{
this.ReleaseInternal();
}
/// <summary>
/// 释放资源句柄
/// </summary>
public void Dispose()
{
this.ReleaseInternal();
}
/// <summary>
/// 获取原生文件的二进制数据
/// </summary>
public byte[] GetRawFileData()
{
if (IsValid == false)
if (IsValidWithWarning == false)
return null;
string filePath = Provider.RawFilePath;
if (File.Exists(filePath) == false)
@@ -74,7 +83,7 @@ namespace YooAsset
/// </summary>
public string GetRawFileText()
{
if (IsValid == false)
if (IsValidWithWarning == false)
return null;
string filePath = Provider.RawFilePath;
if (File.Exists(filePath) == false)
@@ -87,7 +96,7 @@ namespace YooAsset
/// </summary>
public string GetRawFilePath()
{
if (IsValid == false)
if (IsValidWithWarning == false)
return string.Empty;
return Provider.RawFilePath;
}

View File

@@ -22,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);
@@ -31,7 +31,7 @@ namespace YooAsset
}
remove
{
if (IsValid == false)
if (IsValidWithWarning == false)
throw new System.Exception($"{nameof(SceneOperationHandle)} is invalid");
_callback -= value;
}
@@ -44,7 +44,7 @@ namespace YooAsset
{
get
{
if (IsValid == false)
if (IsValidWithWarning == false)
return new Scene();
return Provider.SceneObject;
}
@@ -55,7 +55,7 @@ namespace YooAsset
/// </summary>
public bool ActivateScene()
{
if (IsValid == false)
if (IsValidWithWarning == false)
return false;
if (SceneObject.IsValid() && SceneObject.isLoaded)
@@ -74,7 +74,7 @@ namespace YooAsset
/// </summary>
public bool IsMainScene()
{
if (IsValid == false)
if (IsValidWithWarning == false)
return false;
if (Provider is DatabaseSceneProvider)
@@ -99,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

@@ -1,8 +1,9 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
namespace YooAsset
{
public sealed class SubAssetsOperationHandle : OperationHandleBase
public sealed class SubAssetsOperationHandle : OperationHandleBase, IDisposable
{
private System.Action<SubAssetsOperationHandle> _callback;
@@ -21,7 +22,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,31 +31,18 @@ namespace YooAsset
}
remove
{
if (IsValid == false)
if (IsValidWithWarning == false)
throw new System.Exception($"{nameof(SubAssetsOperationHandle)} is invalid");
_callback -= value;
}
}
/// <summary>
/// 子资源对象集合
/// </summary>
public UnityEngine.Object[] AllAssetObjects
{
get
{
if (IsValid == false)
return null;
return Provider.AllAssetObjects;
}
}
/// <summary>
/// 等待异步执行完毕
/// </summary>
public void WaitForAsyncComplete()
{
if (IsValid == false)
if (IsValidWithWarning == false)
return;
Provider.WaitForAsyncComplete();
}
@@ -67,6 +55,27 @@ namespace YooAsset
this.ReleaseInternal();
}
/// <summary>
/// 释放资源句柄
/// </summary>
public void Dispose()
{
this.ReleaseInternal();
}
/// <summary>
/// 子资源对象集合
/// </summary>
public UnityEngine.Object[] AllAssetObjects
{
get
{
if (IsValidWithWarning == false)
return null;
return Provider.AllAssetObjects;
}
}
/// <summary>
/// 获取子资源对象
@@ -75,7 +84,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 +103,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

@@ -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

@@ -16,7 +16,6 @@ namespace YooAsset
}
private ESteps _steps = ESteps.None;
private bool _isWaitForAsyncComplete = false;
private bool _isShowWaitForAsyncError = false;
private DownloaderBase _unpacker;
private DownloaderBase _downloader;
@@ -136,8 +135,6 @@ namespace YooAsset
/// </summary>
public override void WaitForAsyncComplete()
{
_isWaitForAsyncComplete = true;
int frame = 1000;
while (true)
{

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

@@ -48,7 +48,7 @@ namespace YooAsset
if (DependBundleGroup.IsSucceed() == false)
{
Status = EStatus.Fail;
Status = EStatus.Failed;
LastError = DependBundleGroup.GetLastError();
InvokeCompletion();
return;
@@ -56,7 +56,7 @@ namespace YooAsset
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

@@ -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

@@ -41,7 +41,7 @@ namespace YooAsset
if (OwnerBundle.Status != BundleLoaderBase.EStatus.Succeed)
{
Status = EStatus.Fail;
Status = EStatus.Failed;
LastError = OwnerBundle.LastError;
InvokeCompletion();
return;
@@ -53,7 +53,7 @@ namespace YooAsset
if (Status == EStatus.Checking)
{
RawFilePath = OwnerBundle.FileLoadPath;
Status = EStatus.Success;
Status = EStatus.Succeed;
InvokeCompletion();
}
}

View File

@@ -52,7 +52,7 @@ namespace YooAsset
if (DependBundleGroup.IsSucceed() == false)
{
Status = EStatus.Fail;
Status = EStatus.Failed;
LastError = DependBundleGroup.GetLastError();
InvokeCompletion();
return;
@@ -60,7 +60,7 @@ namespace YooAsset
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,7 +48,7 @@ namespace YooAsset
if (DependBundleGroup.IsSucceed() == false)
{
Status = EStatus.Fail;
Status = EStatus.Failed;
LastError = DependBundleGroup.GetLastError();
InvokeCompletion();
return;
@@ -56,7 +56,7 @@ namespace YooAsset
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

@@ -29,7 +29,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();
@@ -46,7 +46,7 @@ namespace YooAsset
if(Status == EStatus.Checking)
{
RawFilePath = MainAssetInfo.AssetPath;
Status = EStatus.Success;
Status = EStatus.Succeed;
InvokeCompletion();
}
#endif

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>
@@ -80,7 +80,7 @@ namespace YooAsset
{
get
{
return Status == EStatus.Success || Status == EStatus.Fail;
return Status == EStatus.Succeed || Status == EStatus.Failed;
}
}
@@ -223,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

@@ -78,6 +78,9 @@ namespace YooAsset
/// </summary>
public InitializationOperation InitializeAsync(InitializeParameters parameters)
{
// 注意WebGL平台因为网络原因可能会初始化失败
ResetInitializeAfterFailed();
// 检测初始化参数合法性
CheckInitializeParameters(parameters);
@@ -127,6 +130,20 @@ namespace YooAsset
initializeOperation.Completed += InitializeOperation_Completed;
return initializeOperation;
}
private void ResetInitializeAfterFailed()
{
if (_isInitialize && _initializeStatus == EOperationStatus.Failed)
{
_isInitialize = false;
_initializeStatus = EOperationStatus.None;
_initializeError = string.Empty;
_bundleServices = null;
_assetSystemImpl = null;
_editorSimulateModeImpl = null;
_offlinePlayModeImpl = null;
_hostPlayModeImpl = null;
}
}
private void CheckInitializeParameters(InitializeParameters parameters)
{
if (_isInitialize)
@@ -185,7 +202,8 @@ namespace YooAsset
/// 向网络端请求最新的资源版本
/// </summary>
/// <param name="timeout">超时时间默认值60秒</param>
public UpdatePackageVersionOperation UpdatePackageVersionAsync(int timeout = 60)
/// <param name="appendTimeTicks">在URL末尾添加时间戳</param>
public UpdatePackageVersionOperation UpdatePackageVersionAsync(int timeout = 60, bool appendTimeTicks = true)
{
DebugCheckInitialize();
if (_playMode == EPlayMode.EditorSimulateMode)
@@ -202,7 +220,7 @@ namespace YooAsset
}
else if (_playMode == EPlayMode.HostPlayMode)
{
return _hostPlayModeImpl.UpdatePackageVersionAsync(PackageName, timeout);
return _hostPlayModeImpl.UpdatePackageVersionAsync(PackageName, timeout, appendTimeTicks);
}
else
{

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

@@ -105,7 +105,7 @@ namespace YooAsset
if (_steps == ESteps.LoadWebManifest)
{
string fileName = YooAssetSettingsData.GetPatchManifestFileName(_packageName, _packageVersion);
string fileName = YooAssetSettingsData.GetPatchManifestBinaryFileName(_packageName, _packageVersion);
string webURL = GetPatchManifestRequestURL(fileName);
YooLogger.Log($"Beginning to request patch manifest : {webURL}");
_downloader = new UnityWebDataRequester();
@@ -131,7 +131,8 @@ namespace YooAsset
// 解析补丁清单
try
{
_remotePatchManifest = PatchManifest.Deserialize(_downloader.GetText());
byte[] bytesData = _downloader.GetData();
_remotePatchManifest = PatchManifest.DeserializeFromBinary(bytesData);
_steps = ESteps.Done;
Status = EOperationStatus.Succeed;
}

View File

@@ -56,8 +56,8 @@ namespace YooAsset
try
{
YooLogger.Log($"Load simulation manifest file : {_simulatePatchManifestPath}");
string jsonContent = FileUtility.ReadFile(_simulatePatchManifestPath);
var manifest = PatchManifest.Deserialize(jsonContent);
byte[] bytesData = FileUtility.ReadAllBytes(_simulatePatchManifestPath);
var manifest = PatchManifest.DeserializeFromBinary(bytesData);
InitializedPackageVersion = manifest.PackageVersion;
_impl.SetSimulatePatchManifest(manifest);
_steps = ESteps.Done;
@@ -491,7 +491,7 @@ namespace YooAsset
if (_steps == ESteps.LoadAppManifest)
{
string fileName = YooAssetSettingsData.GetPatchManifestFileName(_buildinPackageName, _buildinPackageVersion);
string fileName = YooAssetSettingsData.GetPatchManifestBinaryFileName(_buildinPackageName, _buildinPackageVersion);
string filePath = PathHelper.MakeStreamingLoadPath(fileName);
string url = PathHelper.ConvertToWWWPath(filePath);
_downloader = new UnityWebDataRequester();
@@ -513,7 +513,8 @@ namespace YooAsset
// 解析APP里的补丁清单
try
{
Manifest = PatchManifest.Deserialize(_downloader.GetText());
byte[] bytesData = _downloader.GetData();
Manifest = PatchManifest.DeserializeFromBinary(bytesData);
}
catch (System.Exception e)
{
@@ -590,7 +591,7 @@ namespace YooAsset
if (_steps == ESteps.CopyAppManifest)
{
string savePath = PersistentHelper.GetCacheManifestFilePath(_buildinPackageName);
string fileName = YooAssetSettingsData.GetPatchManifestFileName(_buildinPackageName, _buildinPackageVersion);
string fileName = YooAssetSettingsData.GetPatchManifestBinaryFileName(_buildinPackageName, _buildinPackageVersion);
string filePath = PathHelper.MakeStreamingLoadPath(fileName);
string url = PathHelper.ConvertToWWWPath(filePath);
_downloader = new UnityWebFileRequester();

View File

@@ -171,7 +171,7 @@ namespace YooAsset
if (_steps == ESteps.LoadWebManifest)
{
string fileName = YooAssetSettingsData.GetPatchManifestFileName(_packageName, _packageVersion);
string fileName = YooAssetSettingsData.GetPatchManifestBinaryFileName(_packageName, _packageVersion);
string webURL = GetPatchManifestRequestURL(fileName);
YooLogger.Log($"Beginning to request patch manifest : {webURL}");
_downloader2 = new UnityWebDataRequester();
@@ -194,8 +194,8 @@ namespace YooAsset
{
try
{
string content = _downloader2.GetText();
var manifest = PersistentHelper.SaveCacheManifestFile(_packageName, content);
byte[] bytesData = _downloader2.GetData();
var manifest = PersistentHelper.SaveCacheManifestFile(_packageName, bytesData);
_impl.SetLocalPatchManifest(manifest);
FoundNewManifest = true;
_steps = ESteps.InitVerifyingCache;

View File

@@ -60,14 +60,16 @@ namespace YooAsset
private readonly HostPlayModeImpl _impl;
private readonly string _packageName;
private readonly int _timeout;
private readonly bool _appendTimeTicks;
private ESteps _steps = ESteps.None;
private UnityWebDataRequester _downloader;
internal HostPlayModeUpdatePackageVersionOperation(HostPlayModeImpl impl, string packageName, int timeout)
internal HostPlayModeUpdatePackageVersionOperation(HostPlayModeImpl impl, string packageName, int timeout, bool appendTimeTicks)
{
_impl = impl;
_packageName = packageName;
_timeout = timeout;
_appendTimeTicks = appendTimeTicks;
}
internal override void Start()
{
@@ -130,8 +132,11 @@ namespace YooAsset
else
url = _impl.GetPatchDownloadMainURL(fileName);
// 注意:在URL末尾添加时间戳
return $"{url}?{System.DateTime.UtcNow.Ticks}";
// 在URL末尾添加时间戳
if (_appendTimeTicks)
return $"{url}?{System.DateTime.UtcNow.Ticks}";
else
return url;
}
}
}

View File

@@ -109,15 +109,8 @@ namespace YooAsset
}
public PatchBundle(string bundleName, string fileHash, string fileCRC, long fileSize, bool isRawFile, byte loadMethod, string[] tags)
public PatchBundle()
{
BundleName = bundleName;
FileHash = fileHash;
FileCRC = fileCRC;
FileSize = fileSize;
IsRawFile = isRawFile;
LoadMethod = loadMethod;
Tags = tags;
}
/// <summary>

View File

@@ -266,48 +266,147 @@ namespace YooAsset
/// <summary>
/// 序列化
/// 序列化JSON文件
/// </summary>
public static void Serialize(string savePath, PatchManifest patchManifest)
public static void SerializeToJson(string savePath, PatchManifest manifest)
{
string json = JsonUtility.ToJson(patchManifest);
string json = JsonUtility.ToJson(manifest, true);
FileUtility.CreateFile(savePath, json);
}
/// <summary>
/// 序列化
/// 序列化(二进制文件)
/// </summary>
public static PatchManifest Deserialize(string jsonData)
public static void SerializeToBinary(string savePath, PatchManifest patchManifest)
{
PatchManifest patchManifest = JsonUtility.FromJson<PatchManifest>(jsonData);
if (patchManifest == null)
throw new System.Exception($"{nameof(PatchManifest)} deserialize object is null !");
using (FileStream fs = new FileStream(savePath, FileMode.Create))
{
// 创建缓存器
BufferWriter buffer = new BufferWriter(YooAssetSettings.PatchManifestFileMaxSize);
// 检测文件版本
if (patchManifest.FileVersion != YooAssetSettings.PatchManifestFileVersion)
throw new Exception($"The manifest file version are not compatible : {patchManifest.FileVersion} != {YooAssetSettings.PatchManifestFileVersion}");
// 写入文件标记
buffer.WriteUInt32(YooAssetSettings.PatchManifestFileSign);
// 写入文件版本
buffer.WriteUTF8(patchManifest.FileVersion);
// 写入文件头信息
buffer.WriteBool(patchManifest.EnableAddressable);
buffer.WriteInt32(patchManifest.OutputNameStyle);
buffer.WriteUTF8(patchManifest.PackageName);
buffer.WriteUTF8(patchManifest.PackageVersion);
// 写入资源列表
buffer.WriteInt32(patchManifest.AssetList.Count);
for (int i = 0; i < patchManifest.AssetList.Count; i++)
{
var patchAsset = patchManifest.AssetList[i];
buffer.WriteUTF8(patchAsset.Address);
buffer.WriteUTF8(patchAsset.AssetPath);
buffer.WriteUTF8Array(patchAsset.AssetTags);
buffer.WriteInt32(patchAsset.BundleID);
buffer.WriteInt32Array(patchAsset.DependIDs);
}
// 写入资源包列表
buffer.WriteInt32(patchManifest.BundleList.Count);
for (int i = 0; i < patchManifest.BundleList.Count; i++)
{
var patchBundle = patchManifest.BundleList[i];
buffer.WriteUTF8(patchBundle.BundleName);
buffer.WriteUTF8(patchBundle.FileHash);
buffer.WriteUTF8(patchBundle.FileCRC);
buffer.WriteInt64(patchBundle.FileSize);
buffer.WriteBool(patchBundle.IsRawFile);
buffer.WriteByte(patchBundle.LoadMethod);
buffer.WriteUTF8Array(patchBundle.Tags);
}
// 写入文件流
buffer.WriteToStream(fs);
fs.Flush();
}
}
/// <summary>
/// 反序列化(二进制文件)
/// </summary>
public static PatchManifest DeserializeFromBinary(byte[] binaryData)
{
// 创建缓存器
BufferReader buffer = new BufferReader(binaryData);
// 读取文件标记
uint fileSign = buffer.ReadUInt32();
if (fileSign != YooAssetSettings.PatchManifestFileSign)
throw new Exception("Invalid manifest file !");
PatchManifest manifest = new PatchManifest();
{
// 读取文件版本
manifest.FileVersion = buffer.ReadUTF8();
if (manifest.FileVersion != YooAssetSettings.PatchManifestFileVersion)
throw new Exception($"The manifest file version are not compatible : {manifest.FileVersion} != {YooAssetSettings.PatchManifestFileVersion}");
// 读取文件头信息
manifest.EnableAddressable = buffer.ReadBool();
manifest.OutputNameStyle = buffer.ReadInt32();
manifest.PackageName = buffer.ReadUTF8();
manifest.PackageVersion = buffer.ReadUTF8();
// 读取资源列表
int patchAssetCount = buffer.ReadInt32();
manifest.AssetList = new List<PatchAsset>(patchAssetCount);
for (int i = 0; i < patchAssetCount; i++)
{
var patchAsset = new PatchAsset();
patchAsset.Address = buffer.ReadUTF8();
patchAsset.AssetPath = buffer.ReadUTF8();
patchAsset.AssetTags = buffer.ReadUTF8Array();
patchAsset.BundleID = buffer.ReadInt32();
patchAsset.DependIDs = buffer.ReadInt32Array();
manifest.AssetList.Add(patchAsset);
}
// 读取资源包列表
int patchBundleCount = buffer.ReadInt32();
manifest.BundleList = new List<PatchBundle>(patchBundleCount);
for (int i = 0; i < patchBundleCount; i++)
{
var patchBundle = new PatchBundle();
patchBundle.BundleName = buffer.ReadUTF8();
patchBundle.FileHash = buffer.ReadUTF8();
patchBundle.FileCRC = buffer.ReadUTF8();
patchBundle.FileSize = buffer.ReadInt64();
patchBundle.IsRawFile = buffer.ReadBool();
patchBundle.LoadMethod = buffer.ReadByte();
patchBundle.Tags = buffer.ReadUTF8Array();
manifest.BundleList.Add(patchBundle);
}
}
// BundleList
foreach (var patchBundle in patchManifest.BundleList)
foreach (var patchBundle in manifest.BundleList)
{
patchBundle.ParseBundle(patchManifest.PackageName, patchManifest.OutputNameStyle);
patchManifest.BundleDic.Add(patchBundle.BundleName, patchBundle);
patchBundle.ParseBundle(manifest.PackageName, manifest.OutputNameStyle);
manifest.BundleDic.Add(patchBundle.BundleName, patchBundle);
}
// AssetList
foreach (var patchAsset in patchManifest.AssetList)
foreach (var patchAsset in manifest.AssetList)
{
// 注意:我们不允许原始路径存在重名
string assetPath = patchAsset.AssetPath;
if (patchManifest.AssetDic.ContainsKey(assetPath))
if (manifest.AssetDic.ContainsKey(assetPath))
throw new Exception($"AssetPath have existed : {assetPath}");
else
patchManifest.AssetDic.Add(assetPath, patchAsset);
manifest.AssetDic.Add(assetPath, patchAsset);
}
return patchManifest;
return manifest;
}
/// <summary>
/// 生成Bundle文件的正式名称
/// </summary>

View File

@@ -78,6 +78,10 @@ namespace YooAsset
{
return _simulatePatchManifest.IsIncludeBundleFile(fileName);
}
bool IBundleServices.IsServicesValid()
{
return _simulatePatchManifest != null;
}
#endregion
}
}

View File

@@ -44,9 +44,9 @@ namespace YooAsset
/// <summary>
/// 异步更新资源版本号
/// </summary>
public UpdatePackageVersionOperation UpdatePackageVersionAsync(string packageName, int timeout)
public UpdatePackageVersionOperation UpdatePackageVersionAsync(string packageName, int timeout, bool appendTimeTicks)
{
var operation = new HostPlayModeUpdatePackageVersionOperation(this, packageName, timeout);
var operation = new HostPlayModeUpdatePackageVersionOperation(this, packageName, timeout, appendTimeTicks);
OperationSystem.StartOperation(operation);
return operation;
}
@@ -428,6 +428,10 @@ namespace YooAsset
{
return LocalPatchManifest.IsIncludeBundleFile(fileName);
}
bool IBundleServices.IsServicesValid()
{
return LocalPatchManifest != null;
}
#endregion
}
}

View File

@@ -129,6 +129,10 @@ namespace YooAsset
{
return _appPatchManifest.IsIncludeBundleFile(fileName);
}
bool IBundleServices.IsServicesValid()
{
return _appPatchManifest != null;
}
#endregion
}
}

View File

@@ -2,7 +2,7 @@
namespace YooAsset
{
internal interface IBundleServices
{
{
/// <summary>
/// 获取资源包信息
/// </summary>
@@ -42,5 +42,10 @@ namespace YooAsset
/// 是否包含资源文件
/// </summary>
bool IsIncludeBundleFile(string fileName);
/// <summary>
/// 服务接口是否有效
/// </summary>
bool IsServicesValid();
}
}

View File

@@ -16,13 +16,23 @@ namespace YooAsset
public string RawFileVariant = "rawfile";
/// <summary>
/// 补丁清单文件名称
/// 清单文件名称
/// </summary>
public string PatchManifestFileName = "PatchManifest";
/// <summary>
/// 补丁清单文件格式版本
/// 清单文件头标记
/// </summary>
public const uint PatchManifestFileSign = 0x594F4F;
/// <summary>
/// 清单文件极限大小100MB
/// </summary>
public const int PatchManifestFileMaxSize = 104857600;
/// <summary>
/// 清单文件格式版本
/// </summary>
public const string PatchManifestFileVersion = "1.3.4";

View File

@@ -51,11 +51,19 @@ namespace YooAsset
/// <summary>
/// 获取补丁清单文件完整名称
/// </summary>
public static string GetPatchManifestFileName(string packageName, string packageVersion)
public static string GetPatchManifestBinaryFileName(string packageName, string packageVersion)
{
return $"{Setting.PatchManifestFileName}_{packageName}_{packageVersion}.bytes";
}
/// <summary>
/// 获取补丁清单文件完整名称
/// </summary>
public static string GetPatchManifestJsonFileName(string packageName, string packageVersion)
{
return $"{Setting.PatchManifestFileName}_{packageName}_{packageVersion}.json";
}
/// <summary>
/// 获取补丁清单哈希文件完整名称
/// </summary>

View File

@@ -1,69 +0,0 @@
using System;
namespace YooAsset
{
internal struct BitMask32
{
private int _mask;
public static implicit operator int(BitMask32 mask) { return mask._mask; }
public static implicit operator BitMask32(int mask) { return new BitMask32(mask); }
public BitMask32(int mask)
{
_mask = mask;
}
/// <summary>
/// 打开位
/// </summary>
public void Open(int bit)
{
if (bit < 0 || bit > 31)
throw new ArgumentOutOfRangeException();
else
_mask |= 1 << bit;
}
/// <summary>
/// 关闭位
/// </summary>
public void Close(int bit)
{
if (bit < 0 || bit > 31)
throw new ArgumentOutOfRangeException();
else
_mask &= ~(1 << bit);
}
/// <summary>
/// 位取反
/// </summary>
public void Reverse(int bit)
{
if (bit < 0 || bit > 31)
throw new ArgumentOutOfRangeException();
else
_mask ^= 1 << bit;
}
/// <summary>
/// 所有位取反
/// </summary>
public void Inverse()
{
_mask = ~_mask;
}
/// <summary>
/// 比对位值
/// </summary>
public bool Test(int bit)
{
if (bit < 0 || bit > 31)
throw new ArgumentOutOfRangeException();
else
return (_mask & (1 << bit)) != 0;
}
}
}

View File

@@ -1,69 +0,0 @@
using System;
namespace YooAsset
{
internal struct BitMask64
{
private long _mask;
public static implicit operator long(BitMask64 mask) { return mask._mask; }
public static implicit operator BitMask64(long mask) { return new BitMask64(mask); }
public BitMask64(long mask)
{
_mask = mask;
}
/// <summary>
/// 打开位
/// </summary>
public void Open(int bit)
{
if (bit < 0 || bit > 63)
throw new ArgumentOutOfRangeException();
else
_mask |= 1L << bit;
}
/// <summary>
/// 关闭位
/// </summary>
public void Close(int bit)
{
if (bit < 0 || bit > 63)
throw new ArgumentOutOfRangeException();
else
_mask &= ~(1L << bit);
}
/// <summary>
/// 位取反
/// </summary>
public void Reverse(int bit)
{
if (bit < 0 || bit > 63)
throw new ArgumentOutOfRangeException();
else
_mask ^= 1L << bit;
}
/// <summary>
/// 所有位取反
/// </summary>
public void Inverse()
{
_mask = ~_mask;
}
/// <summary>
/// 比对位值
/// </summary>
public bool Test(int bit)
{
if (bit < 0 || bit > 63)
throw new ArgumentOutOfRangeException();
else
return (_mask & (1L << bit)) != 0;
}
}
}

View File

@@ -0,0 +1,160 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
namespace YooAsset
{
internal class BufferReader
{
private readonly byte[] _buffer;
private int _index = 0;
public BufferReader(byte[] data)
{
_buffer = data;
}
/// <summary>
/// 缓冲区容量
/// </summary>
public int Capacity
{
get { return _buffer.Length; }
}
public byte[] ReadBytes(int count)
{
CheckReaderIndex(count);
var data = new byte[count];
Buffer.BlockCopy(_buffer, _index, data, 0, count);
_index += count;
return data;
}
public byte ReadByte()
{
CheckReaderIndex(1);
return _buffer[_index++];
}
public bool ReadBool()
{
CheckReaderIndex(1);
return _buffer[_index++] == 1;
}
public short ReadInt16()
{
CheckReaderIndex(2);
if (BitConverter.IsLittleEndian)
{
short value = (short)((_buffer[_index]) | (_buffer[_index + 1] << 8));
_index += 2;
return value;
}
else
{
short value = (short)((_buffer[_index] << 8) | (_buffer[_index + 1]));
_index += 2;
return value;
}
}
public ushort ReadUInt16()
{
return (ushort)ReadInt16();
}
public int ReadInt32()
{
CheckReaderIndex(4);
if (BitConverter.IsLittleEndian)
{
int value = (_buffer[_index]) | (_buffer[_index + 1] << 8) | (_buffer[_index + 2] << 16) | (_buffer[_index + 3] << 24);
_index += 4;
return value;
}
else
{
int value = (_buffer[_index] << 24) | (_buffer[_index + 1] << 16) | (_buffer[_index + 2] << 8) | (_buffer[_index + 3]);
_index += 4;
return value;
}
}
public uint ReadUInt32()
{
return (uint)ReadInt32();
}
public long ReadInt64()
{
CheckReaderIndex(8);
if (BitConverter.IsLittleEndian)
{
int i1 = (_buffer[_index]) | (_buffer[_index + 1] << 8) | (_buffer[_index + 2] << 16) | (_buffer[_index + 3] << 24);
int i2 = (_buffer[_index + 4]) | (_buffer[_index + 5] << 8) | (_buffer[_index + 6] << 16) | (_buffer[_index + 7] << 24);
_index += 8;
return (uint)i1 | ((long)i2 << 32);
}
else
{
int i1 = (_buffer[_index] << 24) | (_buffer[_index + 1] << 16) | (_buffer[_index + 2] << 8) | (_buffer[_index + 3]);
int i2 = (_buffer[_index + 4] << 24) | (_buffer[_index + 5] << 16) | (_buffer[_index + 6] << 8) | (_buffer[_index + 7]);
_index += 8;
return (uint)i2 | ((long)i1 << 32);
}
}
public ulong ReadUInt64()
{
return (ulong)ReadInt64();
}
public string ReadUTF8()
{
ushort count = ReadUInt16();
if (count == 0)
return string.Empty;
CheckReaderIndex(count);
string value = Encoding.UTF8.GetString(_buffer, _index, count);
_index += count;
return value;
}
public int[] ReadInt32Array()
{
ushort count = ReadUInt16();
int[] values = new int[count];
for (int i = 0; i < count; i++)
{
values[i] = ReadInt32();
}
return values;
}
public long[] ReadInt64Array()
{
ushort count = ReadUInt16();
long[] values = new long[count];
for (int i = 0; i < count; i++)
{
values[i] = ReadInt64();
}
return values;
}
public string[] ReadUTF8Array()
{
ushort count = ReadUInt16();
string[] values = new string[count];
for (int i = 0; i < count; i++)
{
values[i] = ReadUTF8();
}
return values;
}
[Conditional("DEBUG")]
private void CheckReaderIndex(int length)
{
if (_index + length > Capacity)
{
throw new IndexOutOfRangeException();
}
}
}
}

View File

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

View File

@@ -0,0 +1,179 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.IO;
namespace YooAsset
{
/// <summary>
/// 数据存储以小端字节序为标准
/// </summary>
internal class BufferWriter
{
private readonly byte[] _buffer;
private int _index = 0;
public BufferWriter(int capacity)
{
_buffer = new byte[capacity];
}
/// <summary>
/// 缓冲区容量
/// </summary>
public int Capacity
{
get { return _buffer.Length; }
}
/// <summary>
/// 将有效数据写入文件流
/// </summary>
public void WriteToStream(FileStream fileStream)
{
fileStream.Write(_buffer, 0, _index);
}
public void WriteBytes(byte[] data)
{
int count = data.Length;
CheckWriterIndex(count);
Buffer.BlockCopy(data, 0, _buffer, _index, count);
_index += count;
}
public void WriteByte(byte value)
{
CheckWriterIndex(1);
_buffer[_index++] = value;
}
public void WriteBool(bool value)
{
WriteByte((byte)(value ? 1 : 0));
}
public void WriteInt16(short value)
{
WriteUInt16((ushort)value);
}
public void WriteUInt16(ushort value)
{
CheckWriterIndex(2);
_buffer[_index++] = (byte)value;
_buffer[_index++] = (byte)(value >> 8);
}
public void WriteInt32(int value)
{
WriteUInt32((uint)value);
}
public void WriteUInt32(uint value)
{
CheckWriterIndex(4);
_buffer[_index++] = (byte)value;
_buffer[_index++] = (byte)(value >> 8);
_buffer[_index++] = (byte)(value >> 16);
_buffer[_index++] = (byte)(value >> 24);
}
public void WriteInt64(long value)
{
WriteUInt64((ulong)value);
}
public void WriteUInt64(ulong value)
{
CheckWriterIndex(8);
_buffer[_index++] = (byte)value;
_buffer[_index++] = (byte)(value >> 8);
_buffer[_index++] = (byte)(value >> 16);
_buffer[_index++] = (byte)(value >> 24);
_buffer[_index++] = (byte)(value >> 32);
_buffer[_index++] = (byte)(value >> 40);
_buffer[_index++] = (byte)(value >> 48);
_buffer[_index++] = (byte)(value >> 56);
}
public void WriteUTF8(string value)
{
if (string.IsNullOrEmpty(value))
{
WriteUInt16(0);
}
else
{
byte[] bytes = Encoding.UTF8.GetBytes(value);
int count = bytes.Length;
if (count > ushort.MaxValue)
throw new FormatException($"Write string length cannot be greater than {ushort.MaxValue} !");
WriteUInt16(Convert.ToUInt16(count));
WriteBytes(bytes);
}
}
public void WriteInt32Array(int[] values)
{
if (values == null)
{
WriteUInt16(0);
}
else
{
int count = values.Length;
if (count > ushort.MaxValue)
throw new FormatException($"Write array length cannot be greater than {ushort.MaxValue} !");
WriteUInt16(Convert.ToUInt16(count));
for (int i = 0; i < count; i++)
{
WriteInt32(values[i]);
}
}
}
public void WriteInt64Array(long[] values)
{
if (values == null)
{
WriteUInt16(0);
}
else
{
int count = values.Length;
if (count > ushort.MaxValue)
throw new FormatException($"Write array length cannot be greater than {ushort.MaxValue} !");
WriteUInt16(Convert.ToUInt16(count));
for (int i = 0; i < count; i++)
{
WriteInt64(values[i]);
}
}
}
public void WriteUTF8Array(string[] values)
{
if (values == null)
{
WriteUInt16(0);
}
else
{
int count = values.Length;
if (count > ushort.MaxValue)
throw new FormatException($"Write array length cannot be greater than {ushort.MaxValue} !");
WriteUInt16(Convert.ToUInt16(count));
for (int i = 0; i < count; i++)
{
WriteUTF8(values[i]);
}
}
}
[Conditional("DEBUG")]
private void CheckWriterIndex(int length)
{
if (_index + length > Capacity)
{
throw new IndexOutOfRangeException();
}
}
}
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 6b03684bc5163694ab3983243512b4cc
guid: a270f91ca07a38445949cb5e8195f0a2
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -128,19 +128,19 @@ namespace YooAsset
{
YooLogger.Log($"Load sandbox patch manifest file : {packageName}");
string filePath = GetCacheManifestFilePath(packageName);
string jsonData = File.ReadAllText(filePath);
return PatchManifest.Deserialize(jsonData);
byte[] bytesData = File.ReadAllBytes(filePath);
return PatchManifest.DeserializeFromBinary(bytesData);
}
/// <summary>
/// 存储沙盒内清单文件
/// </summary>
public static PatchManifest SaveCacheManifestFile(string packageName, string fileContent)
public static PatchManifest SaveCacheManifestFile(string packageName, byte[] fileBytesData)
{
YooLogger.Log($"Save sandbox patch manifest file : {packageName}");
var manifest = PatchManifest.Deserialize(fileContent);
var manifest = PatchManifest.DeserializeFromBinary(fileBytesData);
string savePath = GetCacheManifestFilePath(packageName);
FileUtility.CreateFile(savePath, fileContent);
FileUtility.CreateFile(savePath, fileBytesData);
return manifest;
}

View File

@@ -117,15 +117,25 @@ namespace YooAsset
internal static class FileUtility
{
/// <summary>
/// 读取文件
/// 读取文件的文本数据
/// </summary>
public static string ReadFile(string filePath)
public static string ReadAllText(string filePath)
{
if (File.Exists(filePath) == false)
return string.Empty;
return File.ReadAllText(filePath, Encoding.UTF8);
}
/// <summary>
/// 读取文件的字节数据
/// </summary>
public static byte[] ReadAllBytes(string filePath)
{
if (File.Exists(filePath) == false)
return null;
return File.ReadAllBytes(filePath);
}
/// <summary>
/// 创建文件(如果已经存在则删除旧文件)
/// </summary>

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();
}
}
}
@@ -102,6 +106,18 @@ namespace YooAsset
/// </summary>
/// <param name="packageName">资源包名称</param>
public static AssetsPackage GetAssetsPackage(string packageName)
{
var package = TryGetAssetsPackage(packageName);
if (package == null)
YooLogger.Warning($"Not found assets package : {packageName}");
return package;
}
/// <summary>
/// 尝试获取资源包
/// </summary>
/// <param name="packageName">资源包名称</param>
public static AssetsPackage TryGetAssetsPackage(string packageName)
{
if (_isInitialize == false)
throw new Exception($"{nameof(YooAssets)} not initialize !");
@@ -114,8 +130,6 @@ namespace YooAsset
if (package.PackageName == packageName)
return package;
}
YooLogger.Warning($"Not found assets package : {packageName}");
return null;
}

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

@@ -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:

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