first commit
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7a971a9a200a4438945853d71066f16a
|
||||
timeCreated: 1657617558
|
||||
@@ -0,0 +1,45 @@
|
||||
using AssetStoreTools.Validator.Data;
|
||||
using AssetStoreTools.Validator.TestDefinitions;
|
||||
|
||||
namespace AssetStoreTools.Validator.Categories
|
||||
{
|
||||
internal class CategoryEvaluator
|
||||
{
|
||||
private string _category;
|
||||
|
||||
public CategoryEvaluator(string category)
|
||||
{
|
||||
_category = category;
|
||||
}
|
||||
|
||||
public void SetCategory(string category)
|
||||
{
|
||||
_category = category;
|
||||
}
|
||||
|
||||
public string GetCategory()
|
||||
{
|
||||
return _category;
|
||||
}
|
||||
|
||||
public TestResult.ResultStatus Evaluate(ValidationTest validation, bool slugify = false)
|
||||
{
|
||||
var result = validation.Result.Result;
|
||||
if (result != TestResult.ResultStatus.VariableSeverityIssue)
|
||||
return result;
|
||||
|
||||
var category = _category;
|
||||
|
||||
if (slugify)
|
||||
category = validation.Slugify(category);
|
||||
|
||||
return validation.CategoryInfo.EvaluateByFilter(category);
|
||||
}
|
||||
|
||||
// Used by ab-builder
|
||||
public TestResult.ResultStatus EvaluateAndSlugify(ValidationTest validation)
|
||||
{
|
||||
return Evaluate(validation, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: eb61fd62b94248e4b5a3a07665b1a2bf
|
||||
timeCreated: 1661420659
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Categories/CategoryEvaluator.cs
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,38 @@
|
||||
using AssetStoreTools.Validator.Data;
|
||||
using System;
|
||||
using System.Linq;
|
||||
|
||||
namespace AssetStoreTools.Validator.Categories
|
||||
{
|
||||
[System.Serializable]
|
||||
internal class ValidatorCategory
|
||||
{
|
||||
public bool IsFailFilter = false;
|
||||
public bool IsInclusiveFilter = true;
|
||||
public bool AppliesToSubCategories = true;
|
||||
public string[] Filter = { "Tools", "Art" };
|
||||
|
||||
public TestResult.ResultStatus EvaluateByFilter(string category)
|
||||
{
|
||||
if (AppliesToSubCategories)
|
||||
category = category.Split('/')[0];
|
||||
|
||||
var isCategoryInFilter = Filter.Any(x => String.Compare(x, category, StringComparison.OrdinalIgnoreCase) == 0);
|
||||
|
||||
if (IsInclusiveFilter)
|
||||
{
|
||||
if (isCategoryInFilter)
|
||||
return IsFailFilter ? TestResult.ResultStatus.Fail : TestResult.ResultStatus.Warning;
|
||||
else
|
||||
return IsFailFilter ? TestResult.ResultStatus.Warning : TestResult.ResultStatus.Fail;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (isCategoryInFilter)
|
||||
return IsFailFilter ? TestResult.ResultStatus.Warning : TestResult.ResultStatus.Fail;
|
||||
else
|
||||
return IsFailFilter ? TestResult.ResultStatus.Fail : TestResult.ResultStatus.Warning;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a5e60d3639f24063a4eabc21ea1a04a9
|
||||
timeCreated: 1657617578
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Categories/ValidatorCategory.cs
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1c2a38ded8e054c4088aff1db7224f66
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,75 @@
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AssetStoreTools.Validator.Data
|
||||
{
|
||||
internal interface IMessageAction
|
||||
{
|
||||
string ActionTooltip { get; }
|
||||
|
||||
void Execute();
|
||||
}
|
||||
|
||||
internal enum ClickActionType
|
||||
{
|
||||
None = 0,
|
||||
HighlightObject = 1,
|
||||
OpenAsset = 2
|
||||
}
|
||||
|
||||
internal class MessageActionHighlight : IMessageAction
|
||||
{
|
||||
private Object _objectToHighlight;
|
||||
|
||||
public GlobalObjectId GlobalObjectIdentifier { get; set; }
|
||||
public string ActionTooltip => "Click to highlight the associated object in Hierarchy/Project view";
|
||||
|
||||
public MessageActionHighlight(Object objectToHighlight)
|
||||
{
|
||||
this._objectToHighlight = objectToHighlight;
|
||||
GlobalObjectIdentifier = GlobalObjectId.GetGlobalObjectIdSlow(objectToHighlight);
|
||||
}
|
||||
|
||||
public MessageActionHighlight(string globalObjectId)
|
||||
{
|
||||
GlobalObjectId.TryParse(globalObjectId, out GlobalObjectId globalObjectIdentifier);
|
||||
GlobalObjectIdentifier = globalObjectIdentifier;
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
if(_objectToHighlight == null)
|
||||
_objectToHighlight = GlobalObjectId.GlobalObjectIdentifierToObjectSlow(GlobalObjectIdentifier);
|
||||
|
||||
EditorGUIUtility.PingObject(_objectToHighlight);
|
||||
}
|
||||
}
|
||||
|
||||
internal class MessageActionOpenAsset : IMessageAction
|
||||
{
|
||||
private Object _objectToOpen;
|
||||
public int LineNumber { get; set; }
|
||||
|
||||
public GlobalObjectId GlobalObjectIdentifier { get; set; }
|
||||
public string ActionTooltip => "Click to open the associated asset";
|
||||
|
||||
public MessageActionOpenAsset(Object objectToOpen)
|
||||
{
|
||||
this._objectToOpen = objectToOpen;
|
||||
GlobalObjectIdentifier = GlobalObjectId.GetGlobalObjectIdSlow(objectToOpen);
|
||||
}
|
||||
|
||||
public MessageActionOpenAsset(string globalObjectId)
|
||||
{
|
||||
GlobalObjectId.TryParse(globalObjectId, out GlobalObjectId globalObjectIdentifier);
|
||||
GlobalObjectIdentifier = globalObjectIdentifier;
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
if (_objectToOpen == null)
|
||||
_objectToOpen = GlobalObjectId.GlobalObjectIdentifierToObjectSlow(GlobalObjectIdentifier);
|
||||
AssetDatabase.OpenAsset(_objectToOpen, LineNumber);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c6c8b1f23bf5c8841be44b13374e7baf
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Data/MessageActions.cs
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,173 @@
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using Object = UnityEngine.Object;
|
||||
|
||||
namespace AssetStoreTools.Validator.Data
|
||||
{
|
||||
[Serializable]
|
||||
internal struct TestResult
|
||||
{
|
||||
public ResultStatus Result;
|
||||
|
||||
[SerializeField, HideInInspector]
|
||||
private List<TestResultMessage> Messages;
|
||||
|
||||
public int MessageCount => Messages?.Count ?? 0;
|
||||
|
||||
public void AddMessage(string msg)
|
||||
{
|
||||
AddMessage(msg, null, null);
|
||||
}
|
||||
|
||||
public void AddMessage(string msg, IMessageAction clickAction)
|
||||
{
|
||||
AddMessage(msg, clickAction, null);
|
||||
}
|
||||
|
||||
public void AddMessage(string msg, IMessageAction clickAction, params UnityEngine.Object[] messageObjects)
|
||||
{
|
||||
if (Messages == null)
|
||||
Messages = new List<TestResultMessage>();
|
||||
|
||||
var message = new TestResultMessage(msg, clickAction);
|
||||
AddMessageObjects(messageObjects, message);
|
||||
Messages.Add(message);
|
||||
}
|
||||
|
||||
private void AddMessageObjects(Object[] messageObjects, TestResultMessage message)
|
||||
{
|
||||
if (messageObjects == null)
|
||||
return;
|
||||
|
||||
foreach (var obj in messageObjects)
|
||||
{
|
||||
#if AB_BUILDER
|
||||
string path = AssetDatabase.GetAssetPath(obj);
|
||||
message.AppendText($"\nAsset at: {path}");
|
||||
#else
|
||||
message.AddMessageObject(obj);
|
||||
#endif
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public TestResultMessage GetMessage(int index)
|
||||
{
|
||||
if (Messages == null || index >= Messages.Count)
|
||||
throw new InvalidOperationException();
|
||||
return Messages[index];
|
||||
}
|
||||
|
||||
public enum ResultStatus
|
||||
{
|
||||
Undefined = 0,
|
||||
Pass = 1,
|
||||
Fail = 2,
|
||||
Warning = 3,
|
||||
VariableSeverityIssue = 4
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
internal class TestResultMessage : ISerializationCallbackReceiver
|
||||
{
|
||||
[SerializeField, HideInInspector]
|
||||
private string Text;
|
||||
[SerializeField, HideInInspector]
|
||||
private List<string> MessageObjects;
|
||||
// Serialization
|
||||
[SerializeField, HideInInspector]
|
||||
private string SerializedClickAction;
|
||||
|
||||
private IMessageAction _clickAction;
|
||||
|
||||
public IMessageAction ClickAction => _clickAction;
|
||||
|
||||
public TestResultMessage() { }
|
||||
|
||||
public TestResultMessage(string text)
|
||||
{
|
||||
Text = text;
|
||||
}
|
||||
|
||||
public TestResultMessage(string text, IMessageAction clickAction) : this(text)
|
||||
{
|
||||
_clickAction = clickAction;
|
||||
}
|
||||
|
||||
public void AddMessageObject(Object obj)
|
||||
{
|
||||
if (MessageObjects == null)
|
||||
MessageObjects = new List<string>();
|
||||
var globalObjectId = GlobalObjectId.GetGlobalObjectIdSlow(obj).ToString();
|
||||
if (globalObjectId != "GlobalObjectId_V1-0-00000000000000000000000000000000-0-0")
|
||||
MessageObjects.Add(GlobalObjectId.GetGlobalObjectIdSlow(obj).ToString());
|
||||
else
|
||||
Text += $"\n{obj.name}";
|
||||
}
|
||||
|
||||
public Object[] GetMessageObjects()
|
||||
{
|
||||
if (MessageObjects == null)
|
||||
return Array.Empty<Object>();
|
||||
var objects = new Object[MessageObjects.Count];
|
||||
for (int i = 0; i < objects.Length; i++)
|
||||
{
|
||||
GlobalObjectId.TryParse(MessageObjects[i], out GlobalObjectId id);
|
||||
objects[i] = GlobalObjectId.GlobalObjectIdentifierToObjectSlow(id);
|
||||
}
|
||||
return objects;
|
||||
}
|
||||
|
||||
public void OnBeforeSerialize()
|
||||
{
|
||||
SerializedClickAction = ((int)ClickActionType.None).ToString();
|
||||
switch (_clickAction)
|
||||
{
|
||||
case MessageActionHighlight action:
|
||||
var objectId = action.GlobalObjectIdentifier.ToString();
|
||||
SerializedClickAction = $"{(int)ClickActionType.HighlightObject}|{objectId}";
|
||||
break;
|
||||
case MessageActionOpenAsset action:
|
||||
objectId = action.GlobalObjectIdentifier.ToString();
|
||||
SerializedClickAction = $"{(int)ClickActionType.OpenAsset}|{objectId}|{action.LineNumber}";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void OnAfterDeserialize()
|
||||
{
|
||||
string[] splitAction = SerializedClickAction.Split('|');
|
||||
bool parsed = Enum.TryParse(splitAction[0], out ClickActionType clickActionType);
|
||||
if (!parsed) return;
|
||||
|
||||
switch (clickActionType)
|
||||
{
|
||||
case ClickActionType.HighlightObject:
|
||||
_clickAction = new MessageActionHighlight(splitAction[1]);
|
||||
break;
|
||||
case ClickActionType.OpenAsset:
|
||||
_clickAction = new MessageActionOpenAsset(splitAction[1])
|
||||
{ LineNumber = Convert.ToInt32(splitAction[2]) };
|
||||
break;
|
||||
case ClickActionType.None:
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
}
|
||||
|
||||
public void AppendText(string value)
|
||||
{
|
||||
Text += value;
|
||||
}
|
||||
|
||||
public string GetText()
|
||||
{
|
||||
return Text;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 05d7d92bbda6bf44f8ed5fbd0cde57e6
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Data/TestResult.cs
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,31 @@
|
||||
using AssetStoreTools.Validator.TestDefinitions;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace AssetStoreTools.Validator.Data
|
||||
{
|
||||
internal enum ValidationStatus
|
||||
{
|
||||
NotRun,
|
||||
RanToCompletion,
|
||||
Failed,
|
||||
Cancelled
|
||||
}
|
||||
|
||||
internal class ValidationResult
|
||||
{
|
||||
public ValidationStatus Status;
|
||||
public List<AutomatedTest> AutomatedTests;
|
||||
public bool HadCompilationErrors;
|
||||
public string ProjectPath;
|
||||
public string Error;
|
||||
|
||||
public ValidationResult()
|
||||
{
|
||||
Status = ValidationStatus.NotRun;
|
||||
AutomatedTests = new List<AutomatedTest>();
|
||||
HadCompilationErrors = false;
|
||||
ProjectPath = string.Empty;
|
||||
Error = string.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b15525b8dcf3e654ca2f895472ab7cb1
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Data/ValidationResult.cs
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,10 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace AssetStoreTools.Validator.Data
|
||||
{
|
||||
internal class ValidationSettings
|
||||
{
|
||||
public List<string> ValidationPaths;
|
||||
public string Category;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dd3bbba60e92d4843a393874a9de9a63
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Data/ValidationSettings.cs
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,170 @@
|
||||
using AssetStoreTools.Utility;
|
||||
using AssetStoreTools.Utility.Json;
|
||||
using AssetStoreTools.Validator.Utility;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AssetStoreTools.Validator.Data
|
||||
{
|
||||
[Serializable]
|
||||
internal class ValidationStateData
|
||||
{
|
||||
public List<string> SerializedValidationPaths;
|
||||
public string SerializedCategory;
|
||||
public List<int> SerializedKeys;
|
||||
public List<TestResultData> SerializedValues;
|
||||
public bool HasCompilationErrors;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
internal class TestResultData
|
||||
{
|
||||
public TestResult Result;
|
||||
}
|
||||
|
||||
internal class ValidationState
|
||||
{
|
||||
public const string ValidationDataFilename = "AssetStoreValidationState.asset";
|
||||
public const string PersistentDataLocation = "Library";
|
||||
|
||||
public Dictionary<int, TestResultData> TestResults = new Dictionary<int, TestResultData>();
|
||||
public ValidationStateData ValidationStateData;
|
||||
public Action OnJsonSave;
|
||||
|
||||
private static ValidationState s_instance;
|
||||
public static ValidationState Instance
|
||||
{
|
||||
get
|
||||
{
|
||||
if (s_instance == null)
|
||||
s_instance = new ValidationState();
|
||||
|
||||
s_instance.LoadJson();
|
||||
|
||||
return s_instance;
|
||||
}
|
||||
}
|
||||
|
||||
private void LoadJson()
|
||||
{
|
||||
if (s_instance.TestResults.Count != 0)
|
||||
return;
|
||||
|
||||
var saveFile = $"{PersistentDataLocation}/{ValidationDataFilename}";
|
||||
|
||||
if (!File.Exists(saveFile))
|
||||
{
|
||||
s_instance.ValidationStateData = new ValidationStateData
|
||||
{
|
||||
SerializedValidationPaths = new List<string>() { "Assets" },
|
||||
SerializedCategory = ""
|
||||
};
|
||||
return;
|
||||
}
|
||||
|
||||
var fileContents = File.ReadAllText(saveFile);
|
||||
var data = JsonUtility.FromJson<ValidationStateData>(fileContents);
|
||||
if (data.SerializedValidationPaths.Count == 0)
|
||||
data.SerializedValidationPaths.Add("Assets");
|
||||
s_instance.ValidationStateData = data;
|
||||
|
||||
var implementedTests = ValidatorUtility.GetAutomatedTestCases();
|
||||
|
||||
for (var i = 0; i < s_instance.ValidationStateData.SerializedKeys.Count; i++)
|
||||
{
|
||||
// Skip any potential tests that were serialized, but are no longer implemented
|
||||
if (!implementedTests.Any(x => x.Id == s_instance.ValidationStateData.SerializedKeys[i]))
|
||||
continue;
|
||||
|
||||
s_instance.TestResults.Add(s_instance.ValidationStateData.SerializedKeys[i], s_instance.ValidationStateData.SerializedValues[i]);
|
||||
}
|
||||
}
|
||||
|
||||
public void SaveJson()
|
||||
{
|
||||
var saveFile = $"{PersistentDataLocation}/{ValidationDataFilename}";
|
||||
|
||||
if (TestResults.Keys.Count == 0)
|
||||
return;
|
||||
|
||||
ValidationStateData.SerializedKeys = TestResults.Keys.ToList();
|
||||
ValidationStateData.SerializedValues = TestResults.Values.ToList();
|
||||
|
||||
var jsonString = JsonUtility.ToJson(ValidationStateData);
|
||||
|
||||
File.WriteAllText(saveFile, jsonString);
|
||||
|
||||
OnJsonSave?.Invoke();
|
||||
}
|
||||
|
||||
public static bool GetValidationSummaryJson(ValidationStateData data, out string validationSummaryJson)
|
||||
{
|
||||
validationSummaryJson = string.Empty;
|
||||
try
|
||||
{
|
||||
var json = JsonValue.NewDict();
|
||||
|
||||
// Construct compilation state
|
||||
json["has_compilation_errors"] = data.HasCompilationErrors;
|
||||
|
||||
// Construct validation paths
|
||||
var pathsList = JsonValue.NewList();
|
||||
foreach (var path in data.SerializedValidationPaths)
|
||||
pathsList.Add(path);
|
||||
json["validation_paths"] = pathsList;
|
||||
|
||||
// Construct validation results
|
||||
var resultsDict = JsonValue.NewDict();
|
||||
for (int i = 0; i < data.SerializedKeys.Count; i++)
|
||||
{
|
||||
var key = data.SerializedKeys[i].ToString();
|
||||
var value = JsonValue.NewDict();
|
||||
value["int"] = (int)data.SerializedValues[i].Result.Result;
|
||||
value["string"] = data.SerializedValues[i].Result.Result.ToString();
|
||||
|
||||
resultsDict[key] = value;
|
||||
}
|
||||
json["validation_results"] = resultsDict;
|
||||
validationSummaryJson = json.ToString();
|
||||
return true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
ASDebug.LogError($"Failed to parse a validation summary json:\n{e}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public void CreateTestContainer(int testId)
|
||||
{
|
||||
s_instance.TestResults.Add(testId, new TestResultData());
|
||||
}
|
||||
|
||||
public void ChangeResult(int index, TestResult result)
|
||||
{
|
||||
if (!s_instance.TestResults.ContainsKey(index))
|
||||
CreateTestContainer(index);
|
||||
|
||||
s_instance.TestResults[index].Result = result;
|
||||
}
|
||||
|
||||
public void SetCompilationState(bool hasCompilationErrors)
|
||||
{
|
||||
s_instance.ValidationStateData.HasCompilationErrors = hasCompilationErrors;
|
||||
}
|
||||
|
||||
public void SetValidationPaths(string[] paths)
|
||||
{
|
||||
s_instance.ValidationStateData.SerializedValidationPaths = paths.ToList();
|
||||
}
|
||||
|
||||
public void SetCategory(string category)
|
||||
{
|
||||
s_instance.ValidationStateData.SerializedCategory = category;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bbd993a57160414b93583792dbe5241e
|
||||
timeCreated: 1653399871
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Data/ValidationState.cs
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,295 @@
|
||||
using AssetStoreTools.Utility;
|
||||
using AssetStoreTools.Validator.Categories;
|
||||
using AssetStoreTools.Validator.Data;
|
||||
using AssetStoreTools.Validator.TestDefinitions;
|
||||
using AssetStoreTools.Validator.Utility;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AssetStoreTools.Validator
|
||||
{
|
||||
internal class PackageValidator
|
||||
{
|
||||
#if UNITY_EDITOR_OSX
|
||||
private static readonly string UnityPath = Path.Combine(EditorApplication.applicationPath, "Contents", "MacOS", "Unity");
|
||||
#else // Windows, Linux
|
||||
private static readonly string UnityPath = EditorApplication.applicationPath;
|
||||
#endif
|
||||
|
||||
private CategoryEvaluator _categoryEvaluator;
|
||||
|
||||
|
||||
public List<AutomatedTest> AutomatedTests { get; private set; }
|
||||
public string Category => _categoryEvaluator.GetCategory();
|
||||
|
||||
private static PackageValidator s_instance;
|
||||
public static PackageValidator Instance => s_instance ?? (s_instance = new PackageValidator());
|
||||
|
||||
private PackageValidator()
|
||||
{
|
||||
_categoryEvaluator = new CategoryEvaluator(ValidationState.Instance.ValidationStateData.SerializedCategory);
|
||||
CreateAutomatedTestCases();
|
||||
}
|
||||
|
||||
private void CreateAutomatedTestCases()
|
||||
{
|
||||
var testData = ValidatorUtility.GetAutomatedTestCases(ValidatorUtility.SortType.Alphabetical);
|
||||
AutomatedTests = new List<AutomatedTest>();
|
||||
|
||||
foreach (var t in testData)
|
||||
{
|
||||
var test = new AutomatedTest(t);
|
||||
|
||||
if (!ValidationState.Instance.TestResults.ContainsKey(test.Id))
|
||||
ValidationState.Instance.CreateTestContainer(test.Id);
|
||||
else
|
||||
test.Result = ValidationState.Instance.TestResults[test.Id].Result;
|
||||
|
||||
AutomatedTests.Add(test);
|
||||
}
|
||||
}
|
||||
|
||||
public static ValidationResult ValidatePackage(ValidationSettings settings)
|
||||
{
|
||||
return Instance.RunAllTests(settings);
|
||||
}
|
||||
|
||||
public ValidationResult RunAllTests(ValidationSettings settings)
|
||||
{
|
||||
if (settings == null || settings.ValidationPaths == null || settings.ValidationPaths.Count == 0)
|
||||
return new ValidationResult() { Status = ValidationStatus.Failed, Error = "No validation paths were provided" };
|
||||
|
||||
var validationPaths = settings.ValidationPaths.ToArray();
|
||||
_categoryEvaluator.SetCategory(settings.Category);
|
||||
|
||||
var hasCompilationErrors = EditorUtility.scriptCompilationFailed;
|
||||
ValidationState.Instance.SetCompilationState(hasCompilationErrors);
|
||||
|
||||
ValidationState.Instance.SetValidationPaths(validationPaths);
|
||||
ValidationState.Instance.SetCategory(_categoryEvaluator.GetCategory());
|
||||
|
||||
for (int i = 0; i < AutomatedTests.Count; i++)
|
||||
{
|
||||
var test = AutomatedTests[i];
|
||||
|
||||
EditorUtility.DisplayProgressBar("Validating", $"Running validation: {i + 1} - {test.Title}", (float)i / AutomatedTests.Count);
|
||||
test.Run(new ValidationTestConfig() { ValidationPaths = validationPaths });
|
||||
|
||||
// Adjust result based on categories
|
||||
var updatedStatus = _categoryEvaluator.Evaluate(test);
|
||||
test.Result.Result = updatedStatus;
|
||||
|
||||
ValidationState.Instance.ChangeResult(test.Id, test.Result);
|
||||
#if AB_BUILDER
|
||||
EditorUtility.UnloadUnusedAssetsImmediate();
|
||||
#endif
|
||||
}
|
||||
|
||||
EditorUtility.UnloadUnusedAssetsImmediate();
|
||||
EditorUtility.ClearProgressBar();
|
||||
|
||||
ValidationState.Instance.SaveJson();
|
||||
|
||||
var projectPath = Application.dataPath.Substring(0, Application.dataPath.Length - "/Assets".Length);
|
||||
var result = new ValidationResult()
|
||||
{
|
||||
Status = ValidationStatus.RanToCompletion,
|
||||
ProjectPath = projectPath,
|
||||
AutomatedTests = AutomatedTests,
|
||||
HadCompilationErrors = hasCompilationErrors
|
||||
};
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static ValidationResult ValidatePreExportedPackage(ValidationSettings settings, bool interactiveMode)
|
||||
{
|
||||
var result = new ValidationResult();
|
||||
|
||||
if (settings == null || settings.ValidationPaths == null ||
|
||||
settings.ValidationPaths.Count != 1 || string.IsNullOrEmpty(settings.ValidationPaths[0]))
|
||||
{
|
||||
result.Status = ValidationStatus.Failed;
|
||||
result.Error = "A single package path must be provided";
|
||||
return result;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
// Step 1 - prepare a temporary project
|
||||
result = PrepareTemporaryValidationProject(settings, result, interactiveMode);
|
||||
|
||||
// If preparation was cancelled or setting up project failed - return immediately
|
||||
if (result.Status == ValidationStatus.Cancelled || result.Status == ValidationStatus.Failed)
|
||||
return result;
|
||||
|
||||
// Step 2 - load the temporary project and validate the package
|
||||
result = ValidateTemporaryValidationProject(settings, result, interactiveMode);
|
||||
|
||||
return result;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
result.Status = ValidationStatus.Failed;
|
||||
result.Error = e.Message;
|
||||
return result;
|
||||
}
|
||||
finally
|
||||
{
|
||||
EditorUtility.ClearProgressBar();
|
||||
}
|
||||
}
|
||||
|
||||
private static ValidationResult PrepareTemporaryValidationProject(ValidationSettings settings, ValidationResult result, bool interactiveMode)
|
||||
{
|
||||
EditorUtility.DisplayProgressBar("Validating...", "Preparing the validation project. This may take a while.", 0.3f);
|
||||
|
||||
var rootProjectPath = Application.dataPath.Substring(0, Application.dataPath.Length - "/Assets".Length);
|
||||
var tempProjectPath = Path.Combine(rootProjectPath, "Temp", GUID.Generate().ToString()).Replace("\\", "/");
|
||||
result.ProjectPath = tempProjectPath;
|
||||
|
||||
if (!Directory.Exists(tempProjectPath))
|
||||
Directory.CreateDirectory(tempProjectPath);
|
||||
|
||||
// Cannot edit a package.json file that does not yet exist - copy over AST instead
|
||||
var tempPackagesPath = $"{tempProjectPath}/Packages";
|
||||
if (!Directory.Exists(tempPackagesPath))
|
||||
Directory.CreateDirectory(tempPackagesPath);
|
||||
var assetStoreToolsPath = PackageUtility.GetAllPackages().FirstOrDefault(x => x.name == "com.unity.asset-store-tools").resolvedPath.Replace("\\", "/");
|
||||
FileUtility.CopyDirectory(assetStoreToolsPath, $"{tempPackagesPath}/com.unity.asset-store-tools", true);
|
||||
|
||||
var logFilePath = $"{tempProjectPath}/preparation.log";
|
||||
|
||||
// Create the temporary project
|
||||
var processInfo = new System.Diagnostics.ProcessStartInfo()
|
||||
{
|
||||
FileName = UnityPath,
|
||||
Arguments = $"-createProject \"{tempProjectPath}\" -logFile \"{logFilePath}\" -importpackage \"{Path.GetFullPath(settings.ValidationPaths[0])}\" -quit"
|
||||
};
|
||||
if (!interactiveMode)
|
||||
processInfo.Arguments += " -batchmode";
|
||||
|
||||
var exitCode = 0;
|
||||
|
||||
using (var process = System.Diagnostics.Process.Start(processInfo))
|
||||
{
|
||||
while (!process.HasExited)
|
||||
{
|
||||
if (EditorUtility.DisplayCancelableProgressBar("Validating...", "Preparing the validation project. This may take a while.", 0.3f))
|
||||
process.Kill();
|
||||
|
||||
Thread.Sleep(10);
|
||||
}
|
||||
|
||||
exitCode = process.ExitCode;
|
||||
|
||||
// Windows and MacOS exit codes
|
||||
if (exitCode == -1 || exitCode == 137)
|
||||
{
|
||||
result.Status = ValidationStatus.Cancelled;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
if (exitCode != 0)
|
||||
{
|
||||
result.Status = ValidationStatus.Failed;
|
||||
result.Error = $"Setting up the temporary project failed (exit code {exitCode})\n\nMore information can be found in the log file: {logFilePath}";
|
||||
}
|
||||
else
|
||||
{
|
||||
result.Status = ValidationStatus.RanToCompletion;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static ValidationResult ValidateTemporaryValidationProject(ValidationSettings settings, ValidationResult result, bool interactiveMode)
|
||||
{
|
||||
EditorUtility.DisplayProgressBar("Validating...", "Performing validation...", 0.6f);
|
||||
|
||||
var logFilePath = $"{result.ProjectPath}/validation.log";
|
||||
var processInfo = new System.Diagnostics.ProcessStartInfo()
|
||||
{
|
||||
FileName = UnityPath,
|
||||
Arguments = $"-projectPath \"{result.ProjectPath}\" -logFile \"{logFilePath}\" -executeMethod AssetStoreTools.Validator.PackageValidator.ValidateProject -category \"{settings.Category}\""
|
||||
};
|
||||
|
||||
if (!interactiveMode)
|
||||
processInfo.Arguments += " -batchmode -ignorecompilererrors";
|
||||
|
||||
var exitCode = 0;
|
||||
|
||||
using (var process = System.Diagnostics.Process.Start(processInfo))
|
||||
{
|
||||
process.WaitForExit();
|
||||
exitCode = process.ExitCode;
|
||||
}
|
||||
|
||||
if (exitCode != 0)
|
||||
{
|
||||
result.Status = ValidationStatus.Failed;
|
||||
result.Error = $"Validating the temporary project failed (exit code {exitCode})\n\nMore information can be found in the log file: {logFilePath}";
|
||||
}
|
||||
else
|
||||
{
|
||||
result.Status = ValidationStatus.RanToCompletion;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// Invoked via Command Line Arguments
|
||||
private static void ValidateProject()
|
||||
{
|
||||
var exitCode = 0;
|
||||
try
|
||||
{
|
||||
// Determine whether to validate Assets folder or Packages folders
|
||||
var validationPaths = new List<string>();
|
||||
var packageDirectories = Directory.GetDirectories("Packages", "*", SearchOption.TopDirectoryOnly)
|
||||
.Select(x => x.Replace("\\", "/"))
|
||||
.Where(x => x != "Packages/com.unity.asset-store-tools").ToArray();
|
||||
|
||||
if (packageDirectories.Length > 0)
|
||||
validationPaths.AddRange(packageDirectories);
|
||||
else
|
||||
validationPaths.Add("Assets");
|
||||
|
||||
// Parse category
|
||||
var category = string.Empty;
|
||||
var args = Environment.GetCommandLineArgs().ToList();
|
||||
var categoryIndex = args.IndexOf("-category");
|
||||
if (categoryIndex != -1 && categoryIndex + 1 < args.Count)
|
||||
category = args[categoryIndex + 1];
|
||||
|
||||
// Run validation
|
||||
var validationSettings = new ValidationSettings()
|
||||
{
|
||||
ValidationPaths = validationPaths,
|
||||
Category = category
|
||||
};
|
||||
Instance.RunAllTests(validationSettings);
|
||||
|
||||
AssetStoreTools.ShowAssetStoreToolsValidator();
|
||||
EditorUtility.DisplayDialog("Validation complete", "Package validation complete.\n\nTo resume work in the original project, close this Editor instance", "OK");
|
||||
}
|
||||
catch
|
||||
{
|
||||
exitCode = 1;
|
||||
throw;
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (Application.isBatchMode)
|
||||
EditorApplication.Exit(exitCode);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ce60756ef40c87e4583de0ea0776af7b
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/PackageValidator.cs
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 462cf5f916fad974a831f6a44aadcc82
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,47 @@
|
||||
using AssetStoreTools.Validator.Data;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AssetStoreTools.Validator.TestDefinitions
|
||||
{
|
||||
internal class AutomatedTest : ValidationTest
|
||||
{
|
||||
public AutomatedTest(ValidationTestScriptableObject source) : base(source) { }
|
||||
|
||||
public override void Run(ValidationTestConfig config)
|
||||
{
|
||||
Type testClass;
|
||||
if (TestScript == null || (testClass = TestScript.GetClass()) == null)
|
||||
{
|
||||
Debug.LogError($"Cannot run test {Title} - Test Script class was not found");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!testClass.GetInterfaces().Contains(typeof(ITestScript)))
|
||||
{
|
||||
Debug.LogError($"Cannot run test {Title} - Test Script class is not derived from {nameof(ITestScript)}");
|
||||
return;
|
||||
}
|
||||
|
||||
var testMethod = testClass.GetMethod("Run");
|
||||
if (testMethod == null)
|
||||
{
|
||||
Debug.LogError($"Cannot run test {Title} - Run() method was not found");
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
Result = (TestResult)testMethod.Invoke(Activator.CreateInstance(testClass), new[] { config });
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
var result = new TestResult() { Result = TestResult.ResultStatus.Undefined };
|
||||
result.AddMessage("An exception was caught when running this test case. See Console for more details");
|
||||
Debug.LogError($"An exception was caught when running validation for test case '{Title}'\n{e.InnerException}");
|
||||
Result = result;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b284048af6fef0d49b8c3a37f7083d04
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Test Definitions/AutomatedTest.cs
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,9 @@
|
||||
using AssetStoreTools.Validator.Data;
|
||||
|
||||
namespace AssetStoreTools.Validator.TestDefinitions
|
||||
{
|
||||
internal interface ITestScript
|
||||
{
|
||||
TestResult Run(ValidationTestConfig config);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 839ef1f3e773ab347b66932d3f810aec
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Test Definitions/ITestScript.cs
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d62652f91f698904ea662c6ab252ea59
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,11 @@
|
||||
#if UNITY_ASTOOLS_DEVELOPMENT
|
||||
using UnityEngine;
|
||||
#endif
|
||||
|
||||
namespace AssetStoreTools.Validator.TestDefinitions
|
||||
{
|
||||
#if UNITY_ASTOOLS_DEVELOPMENT
|
||||
[CreateAssetMenu(fileName = "AutomatedTest", menuName = "Asset Store Validator/Automated Test")]
|
||||
#endif
|
||||
internal class AutomatedTestScriptableObject : ValidationTestScriptableObject { }
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d813ff809ae82f643bf975031305d541
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Test Definitions/Scriptable
|
||||
Objects/AutomatedTestScriptableObject.cs
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7cd52466a2239344d90c3043b7afc1e4
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,181 @@
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using System.Linq;
|
||||
using AssetStoreTools.Validator.Utility;
|
||||
using AssetStoreTools.Validator.Data;
|
||||
|
||||
namespace AssetStoreTools.Validator.TestDefinitions
|
||||
{
|
||||
[CustomEditor(typeof(ValidationTestScriptableObject), true)]
|
||||
internal class ValidationTestScriptableObjectInspector : UnityEditor.Editor
|
||||
{
|
||||
private enum FilterSeverity
|
||||
{
|
||||
Warning,
|
||||
Fail
|
||||
}
|
||||
|
||||
private enum FilterType
|
||||
{
|
||||
UseFilter,
|
||||
ExcludeFilter
|
||||
}
|
||||
|
||||
private ValidationTestScriptableObject _data;
|
||||
private ValidationTestScriptableObject[] _allObjects;
|
||||
|
||||
private SerializedProperty _script;
|
||||
|
||||
private SerializedProperty _testScript;
|
||||
private SerializedProperty _category;
|
||||
private SerializedProperty _failFilterProperty;
|
||||
private SerializedProperty _isInclusiveProperty;
|
||||
private SerializedProperty _appliesToSubCategories;
|
||||
private SerializedProperty _categoryFilter;
|
||||
|
||||
private bool _hadChanges;
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
if (target == null) return;
|
||||
|
||||
_data = target as ValidationTestScriptableObject;
|
||||
|
||||
_script = serializedObject.FindProperty("m_Script");
|
||||
|
||||
_testScript = serializedObject.FindProperty(nameof(ValidationTestScriptableObject.TestScript));
|
||||
_category = serializedObject.FindProperty(nameof(ValidationTestScriptableObject.CategoryInfo));
|
||||
_failFilterProperty = _category.FindPropertyRelative(nameof(ValidationTestScriptableObject.CategoryInfo.IsFailFilter));
|
||||
_isInclusiveProperty = _category.FindPropertyRelative(nameof(ValidationTestScriptableObject.CategoryInfo.IsInclusiveFilter));
|
||||
_appliesToSubCategories = _category.FindPropertyRelative(nameof(ValidationTestScriptableObject.CategoryInfo.AppliesToSubCategories));
|
||||
_categoryFilter = _category.FindPropertyRelative(nameof(ValidationTestScriptableObject.CategoryInfo.Filter));
|
||||
|
||||
_allObjects = ValidatorUtility.GetAutomatedTestCases(ValidatorUtility.SortType.Id);
|
||||
_hadChanges = false;
|
||||
}
|
||||
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
serializedObject.Update();
|
||||
|
||||
EditorGUILayout.LabelField(GetInspectorTitle(), new GUIStyle(EditorStyles.centeredGreyMiniLabel) {fontSize = 24}, GUILayout.MinHeight(50));
|
||||
|
||||
EditorGUI.BeginDisabledGroup(true);
|
||||
EditorGUILayout.PropertyField(_script);
|
||||
|
||||
EditorGUI.BeginChangeCheck();
|
||||
// ID field
|
||||
EditorGUILayout.IntField("Test Id", _data.Id);
|
||||
if (!ValidateID())
|
||||
EditorGUILayout.HelpBox("ID is already in use", MessageType.Warning);
|
||||
EditorGUI.EndDisabledGroup();
|
||||
|
||||
// Other fields
|
||||
_data.Title = EditorGUILayout.TextField("Title", _data.Title);
|
||||
if (string.IsNullOrEmpty(_data.Title))
|
||||
EditorGUILayout.HelpBox("Title cannot be empty", MessageType.Warning);
|
||||
|
||||
EditorGUILayout.LabelField("Description");
|
||||
GUIStyle myTextAreaStyle = new GUIStyle(EditorStyles.textArea) { wordWrap = true };
|
||||
_data.Description = EditorGUILayout.TextArea(_data.Description, myTextAreaStyle);
|
||||
|
||||
EditorGUILayout.PropertyField(_testScript);
|
||||
if (_testScript.objectReferenceValue != null)
|
||||
{
|
||||
var generatedScriptType = (_testScript.objectReferenceValue as MonoScript).GetClass();
|
||||
if (generatedScriptType == null || !generatedScriptType.GetInterfaces().Contains(typeof(ITestScript)))
|
||||
EditorGUILayout.HelpBox($"Test Script does not derive from {nameof(ITestScript)}. Test execution will fail", MessageType.Warning);
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(_data.Title))
|
||||
{
|
||||
var generatedScriptName = GenerateTestScriptName();
|
||||
EditorGUILayout.LabelField($"Proposed script name: <i>{generatedScriptName}.cs</i>", new GUIStyle("Label") { richText = true });
|
||||
EditorGUILayout.Space();
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
GUILayout.FlexibleSpace();
|
||||
if (GUILayout.Button("Generate Test Method Script", GUILayout.MaxWidth(200f)))
|
||||
{
|
||||
var generatedScript = ValidatorUtility.GenerateTestScript(generatedScriptName);
|
||||
_testScript.objectReferenceValue = generatedScript;
|
||||
}
|
||||
EditorGUILayout.EndHorizontal();
|
||||
}
|
||||
|
||||
// Category Filter Options
|
||||
EditorGUILayout.Space(30);
|
||||
|
||||
var filterSeverity = (FilterSeverity)EditorGUILayout.EnumPopup("Fail Type", _failFilterProperty.boolValue ? FilterSeverity.Fail : FilterSeverity.Warning);
|
||||
_failFilterProperty.boolValue = filterSeverity == FilterSeverity.Fail ? true : false;
|
||||
var filterType = (FilterType)EditorGUILayout.EnumPopup("Filtering rule", _isInclusiveProperty.boolValue ? FilterType.UseFilter : FilterType.ExcludeFilter);
|
||||
_isInclusiveProperty.boolValue = filterType == FilterType.UseFilter ? true : false;
|
||||
|
||||
EditorGUILayout.PropertyField(_appliesToSubCategories);
|
||||
|
||||
EditorGUILayout.Space(10);
|
||||
|
||||
EditorGUILayout.BeginHorizontal(GUI.skin.FindStyle("HelpBox"));
|
||||
EditorGUILayout.LabelField(GetFilterDescription(_failFilterProperty.boolValue, _isInclusiveProperty.boolValue), new GUIStyle(GUI.skin.label) { wordWrap = true, richText = true });
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
EditorGUILayout.Space(10);
|
||||
|
||||
EditorGUILayout.PropertyField(_categoryFilter);
|
||||
|
||||
if (EditorGUI.EndChangeCheck())
|
||||
{
|
||||
EditorUtility.SetDirty(target);
|
||||
_hadChanges = true;
|
||||
}
|
||||
|
||||
_hadChanges = serializedObject.ApplyModifiedProperties() || _hadChanges;
|
||||
}
|
||||
|
||||
private string GetInspectorTitle()
|
||||
{
|
||||
switch (_data)
|
||||
{
|
||||
case AutomatedTestScriptableObject _:
|
||||
return "Automated Test";
|
||||
default:
|
||||
return "Miscellaneous Test";
|
||||
}
|
||||
}
|
||||
|
||||
private string GenerateTestScriptName()
|
||||
{
|
||||
var name = _data.Title.Replace(" ", "");
|
||||
return name;
|
||||
}
|
||||
|
||||
private string GetFilterDescription(bool isFailFilter, bool isInclusive)
|
||||
{
|
||||
string text = $"When a <i>{TestResult.ResultStatus.VariableSeverityIssue}</i> result type is returned from the test method:\n\n";
|
||||
if(isFailFilter)
|
||||
{
|
||||
if(isInclusive)
|
||||
return text + "• <b>Categories IN the filter</b> will result in a <color=red>FAIL</color>.\n• <b>Categories NOT in the filter</b> will result in a <color=yellow>WARNING</color>";
|
||||
else
|
||||
return text + "• <b>Categories NOT in the filter</b> will result in a <color=red>FAIL</color>.\n• <b>Categories IN the filter</b> will result in a <color=yellow>WARNING</color>";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (isInclusive)
|
||||
return text + "• <b>Categories IN the filter</b> will result in a <color=yellow>WARNING</color>.\n• <b>Categories NOT in the filter</b> will result in a <color=red>FAIL</color>";
|
||||
else
|
||||
return text + "• <b>Categories NOT in the filter</b> will result in a <color=yellow>WARNING</color>.\n• <b>Categories IN the filter</b> will result in a <color=red>FAIL</color>";
|
||||
}
|
||||
}
|
||||
|
||||
private bool ValidateID()
|
||||
{
|
||||
return !_allObjects.Any(x => x.Id == _data.Id && x != _data);
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
if (!_hadChanges) return;
|
||||
AssetDatabase.SaveAssets();
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 06d76b0e6df91eb43ac956f883c4a2da
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Test Definitions/Scriptable
|
||||
Objects/Editor/ValidationTestScriptableObjectInspector.cs
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,33 @@
|
||||
using AssetStoreTools.Validator.Categories;
|
||||
using AssetStoreTools.Validator.Utility;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AssetStoreTools.Validator.TestDefinitions
|
||||
{
|
||||
internal abstract class ValidationTestScriptableObject : ScriptableObject
|
||||
{
|
||||
[SerializeField, HideInInspector]
|
||||
private bool HasBeenInitialized;
|
||||
|
||||
public int Id;
|
||||
public string Title;
|
||||
public string Description;
|
||||
public ValidatorCategory CategoryInfo;
|
||||
public MonoScript TestScript;
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
// To do: maybe replace with Custom Inspector
|
||||
if (HasBeenInitialized)
|
||||
return;
|
||||
|
||||
var existingTestCases = ValidatorUtility.GetAutomatedTestCases(ValidatorUtility.SortType.Id);
|
||||
if (existingTestCases.Length > 0)
|
||||
Id = existingTestCases[existingTestCases.Length - 1].Id + 1;
|
||||
else
|
||||
Id = 1;
|
||||
HasBeenInitialized = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 11c2422f057b75a458e184d169a00eb6
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Test Definitions/Scriptable
|
||||
Objects/ValidationTestScriptableObject.cs
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,36 @@
|
||||
using AssetStoreTools.Validator.Categories;
|
||||
using AssetStoreTools.Validator.Data;
|
||||
using UnityEditor;
|
||||
|
||||
namespace AssetStoreTools.Validator.TestDefinitions
|
||||
{
|
||||
internal abstract class ValidationTest
|
||||
{
|
||||
public int Id;
|
||||
public string Title;
|
||||
public string Description;
|
||||
public MonoScript TestScript;
|
||||
|
||||
public ValidatorCategory CategoryInfo;
|
||||
|
||||
public TestResult Result;
|
||||
|
||||
protected ValidationTest(ValidationTestScriptableObject source)
|
||||
{
|
||||
Id = source.Id;
|
||||
Title = source.Title;
|
||||
Description = source.Description;
|
||||
TestScript = source.TestScript;
|
||||
CategoryInfo = source.CategoryInfo;
|
||||
Result = new TestResult();
|
||||
}
|
||||
|
||||
public abstract void Run(ValidationTestConfig config);
|
||||
|
||||
public string Slugify(string value)
|
||||
{
|
||||
string newValue = value.Replace(' ', '-').ToLower();
|
||||
return newValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 095d629656748914bb6202598876fdf4
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Test Definitions/ValidationTest.cs
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace AssetStoreTools.Validator.TestDefinitions
|
||||
{
|
||||
public class ValidationTestConfig
|
||||
{
|
||||
public string[] ValidationPaths;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 42aa5ee716f3fc340a5055b4c42a0b55
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Test Definitions/ValidationTestConfig.cs
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 82d68ee644bbbb44183019f731e9f205
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,26 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check Animation Clips
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 31
|
||||
Title: Check Animation Clips
|
||||
Description: Animation Clips should not have the default name 'Take 001'. This
|
||||
could lead to confusion when filtering assets by animation clips.
|
||||
CategoryInfo:
|
||||
IsFailFilter: 0
|
||||
IsInclusiveFilter: 0
|
||||
AppliesToSubCategories: 1
|
||||
Filter:
|
||||
- Animation
|
||||
TestScript: {fileID: 11500000, guid: 7a28985886f182c4bacc89a44777c742, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e0426dd01b5136a4ca1d42d312e12fad
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
Animation Clips.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,32 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check Audio Clipping
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 27
|
||||
Title: Check Audio Clipping
|
||||
Description: 'Audio files should not peak above the defined dB threshold of -0.3db
|
||||
|
||||
|
||||
Please
|
||||
note that lossless audio files that are imported into Unity with their Compression
|
||||
Format set to anything other than PCM can still fail the Validator. If such cases
|
||||
arise, please export your audio files with extra headroom, or set the Compression
|
||||
Format to PCM if applicable.'
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter:
|
||||
- Audio
|
||||
TestScript: {fileID: 11500000, guid: f604db0353da0cb46bb048f5cd37186f, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 03c6cd398931b3e41b0784e8589e153f
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
Audio Clipping.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,26 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check Colliders
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 4
|
||||
Title: Check Colliders
|
||||
Description: Prefabs with meshes inside them have to have colliders applied to
|
||||
them, if the Prefabs are marked as Static. Please make sure you have appropriately
|
||||
sized colliders applied to your prefabs.
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter: []
|
||||
TestScript: {fileID: 11500000, guid: 308b3d7b7a883b949a14f47cfd5c7ebe, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 28ab5af444cf3c849800ed0d8f4a3102
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
Colliders.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,31 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check Compressed Files
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 22
|
||||
Title: Check Compressed Files
|
||||
Description: "Package should not contain nested .unitypackage or archive files
|
||||
that obscure most of, or the entirety of the content.\n\n.unitypackage files
|
||||
are acceptable for including setup preferences, settings, supplemental files
|
||||
for other Asset Store products, or alternative render pipeline content\n\n.zip
|
||||
files are acceptable if they are compressing files that do not natively function
|
||||
in the Unity Editor. (For example, Blender, HTML Documentation, or Visual Studio
|
||||
Projects). Such files should include 'source' in the file name (e.g. \"Blender_source.zip\"
|
||||
or \"PSDSource.zip\")."
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter: []
|
||||
TestScript: {fileID: 11500000, guid: 84b23febe0d923842aef73b95da5f25b, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 53189e6e51235b14192c4d5b3145dd27
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
Compressed Files.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,33 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check Demo Scenes
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 1
|
||||
Title: Check Demo Scenes
|
||||
Description: If your product has content to show off, it should be displayed in
|
||||
a demo scene. Please provide a practical demo with all of your assets set up.
|
||||
If your asset is based on scripting or Editor extensions, please consider adding
|
||||
a demo scene showcasing the asset or showing setup steps in the scene.
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter:
|
||||
- 3D
|
||||
- 2D
|
||||
- Animation
|
||||
- Essentials
|
||||
- Templates
|
||||
- VFX
|
||||
TestScript: {fileID: 11500000, guid: f844c2dfa4669ff4eacf5591b544edaf, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f108107be07f69045813d69eff580078
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
Demo Scenes.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,31 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check Documentation
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 6
|
||||
Title: Check Documentation
|
||||
Description: If your asset contains any code (scripts, shaders) - we ask that you
|
||||
include offline documentation in the format of pdf or rtf with your submission,
|
||||
as it is mandatory for all packages that include scripts or other components
|
||||
that require set up. Your documentation must be organized with a table of contents
|
||||
and numbered, written in English and have no grammar mistakes. Create a setup
|
||||
guide with a step-by-step tutorial (pdf or video), as well as a script reference
|
||||
if users will need to do any coding. If your asset contains art (3D models, sprites)
|
||||
and you used code to set up a demo scene, you may skip this step.
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter: []
|
||||
TestScript: {fileID: 11500000, guid: 3c8425198983eda4c9b35aa0d59ea33c, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b03433f7977b29e4ca7e8d76393a6c26
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
Documentation.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,31 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check Empty Prefabs
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 5
|
||||
Title: Check Empty Prefabs
|
||||
Description: Prefabs cannot be empty, please make sure that you set up your prefabs.
|
||||
correctly.
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter:
|
||||
- 2D
|
||||
- 3D
|
||||
- Animation
|
||||
- Essentials
|
||||
- Templates
|
||||
- VFX
|
||||
TestScript: {fileID: 11500000, guid: 8055bed9373283e4793463b90b42f08f, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 08790ea0ed0fd274fb1df75ccc32d415
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
Empty Prefabs.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,26 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check File Menu Names
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 21
|
||||
Title: Check File Menu Names
|
||||
Description: File menus should be placed under an existing menu, such as "Window/<PackageName>".
|
||||
If no existing menus are a good fit, they should be placed under a custom menu
|
||||
called "Tools".
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter: []
|
||||
TestScript: {fileID: 11500000, guid: d8e3b12ecc1fcd74d9a9f8d2b549fc63, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: eaf232919893db04b8e05e91f6815424
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
File Menu Names.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,33 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check LODs
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 17
|
||||
Title: Check LODs
|
||||
Description: 'Prefabs containing meshes with ''LOD'' in their name must meet the
|
||||
following requirements:
|
||||
|
||||
- LOD Mesh must be referenced by an LOD Group Component
|
||||
|
||||
-
|
||||
LOD Mesh GameObject must be a child of an LOD Group Component.'
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter:
|
||||
- 3D
|
||||
- Essentials
|
||||
- Templates
|
||||
TestScript: {fileID: 11500000, guid: 43b2158602f87704fa7b91561cfc8678, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ad52ffa05767e9d4bb4d92093ad68b03
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
LODs.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,26 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check Line Endings
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 20
|
||||
Title: Check Line Endings
|
||||
Description: Inconsistent line endings in scripts might lead to incorrect line
|
||||
numbers in stacktraces and compiler errors. Many text editors can fix this using
|
||||
Convert Line Endings menu commands.
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter: []
|
||||
TestScript: {fileID: 11500000, guid: 85885005d1c594f42826de3555e98365, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1e7b5480c1d8bda43ab4fa945939e243
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
Line Endings.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,26 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check Mesh Prefabs
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 2
|
||||
Title: Check Mesh Prefabs
|
||||
Description: Each mesh should have a corresponding prefab set up with all variations
|
||||
of the texture/mesh/material that you are providing. Please create prefabs for
|
||||
all of your imported objects.
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter: []
|
||||
TestScript: {fileID: 11500000, guid: 3c3d0d642ac6a6a48aa124a93dae3734, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 03b362b67028eb443b7ba8b84aedd5f2
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
Mesh Prefabs.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,25 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check Missing Components in Assets
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 9
|
||||
Title: Check Missing Components in Assets
|
||||
Description: We do not allow missing or broken material/texture/prefab/script connections
|
||||
in your package. Please make sure none of your assets have missing components.
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter: []
|
||||
TestScript: {fileID: 11500000, guid: 22d8f814e2363e34ea220736a4042728, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1a3d0b3827fc16347867bee335e8f4ea
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
Missing Components in Assets.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,25 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check Missing Components in Scenes
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 10
|
||||
Title: Check Missing Components in Scenes
|
||||
Description: We do not allow missing or broken material/texture/prefab/script connections
|
||||
in your package. Please make sure none of your scene objects have missing components.
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter: []
|
||||
TestScript: {fileID: 11500000, guid: 511e76d0ebcb23d40a7b49dda0e2980f, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bc2cb4e6635aa334ea4a52e2e3ce57c8
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
Missing Components in Scenes.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,29 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check Model Import Logs
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 32
|
||||
Title: Check Model Import Logs
|
||||
Description: Model assets should work without issues. Please make sure that there
|
||||
are no errors or warnings when these models are imported.
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter:
|
||||
- 3D
|
||||
- Animation
|
||||
- Essentials
|
||||
- Templates
|
||||
TestScript: {fileID: 11500000, guid: 98f3ec209166855408eaf4abe5bff591, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c889cdd91c2f41941a14363dad7a1a38
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
Model Import Logs.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,25 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check Model Orientation
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 7
|
||||
Title: Check Model Orientation
|
||||
Description: 'Meshes should be facing the correct way. The proper facing is: Z
|
||||
vector is forward, Y vector is up, X vector is right.'
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter: []
|
||||
TestScript: {fileID: 11500000, guid: 56cdcdc41a80fbc46b5b2b83ec8d66d7, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 45b2b11da67e8864aacc62d928524b4c
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
Model Orientation.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,24 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check Model Types
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 23
|
||||
Title: Check Model Types
|
||||
Description: Mesh assets must be either .fbx, .dae, .abc, or .obj file types.
|
||||
CategoryInfo:
|
||||
IsFailFilter: 0
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter: []
|
||||
TestScript: {fileID: 11500000, guid: 428b1fb838e6f5a469bbfd26ca3fbfd2, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ffef800a102b0e04cae1a3b98549ef1b
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
Model Types.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,25 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check Normal Map Textures
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 26
|
||||
Title: Check Normal Map Textures
|
||||
Description: Textures that are assigned to Materials as Normal Maps should have
|
||||
their import Texture Type set to 'Normal Map'
|
||||
CategoryInfo:
|
||||
IsFailFilter: 0
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter: []
|
||||
TestScript: {fileID: 11500000, guid: d55cea510248f814eb2194c2b53f88d2, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 241ad0174fcadb64da867011d196acbb
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
Normal Map Textures.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,24 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check Package Size
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 30
|
||||
Title: Check Package Size
|
||||
Description: Package submissions should not be more than 6 GB in size
|
||||
CategoryInfo:
|
||||
IsFailFilter: 0
|
||||
IsInclusiveFilter: 0
|
||||
AppliesToSubCategories: 1
|
||||
Filter: []
|
||||
TestScript: {fileID: 11500000, guid: ee88143d11c82ff498e8318602cf22f8, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5da4c440d3728ba40b183c1de4a1c384
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
Package Size.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,25 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check Particle Systems
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 25
|
||||
Title: Check Particle Systems
|
||||
Description: All Particle Systems should be saved as Prefabs
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter:
|
||||
- VFX
|
||||
TestScript: {fileID: 11500000, guid: 6a623f7988c75884bb17b169ccd3e993, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 87da7eaed3cee0d4b8ada0b500e3a958
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
Particle Systems.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,25 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check Path Lengths
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 28
|
||||
Title: Check Path Lengths
|
||||
Description: Package content file paths should not be excessively lengthened. File
|
||||
paths for assets must be under 140 characters
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter: []
|
||||
TestScript: {fileID: 11500000, guid: ae379305e9165e84584373a8272c09e7, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 21f8ec0602ffac045b1f4a93f8a9b555
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
Path Lengths.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,28 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check Prefab Transforms
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 3
|
||||
Title: Check Prefab Transforms
|
||||
Description: Prefabs must have their position/rotation set to 0, and their scale
|
||||
set to 1.
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter:
|
||||
- 3D
|
||||
- Essentials
|
||||
- Templates
|
||||
TestScript: {fileID: 11500000, guid: f712c17a60bf2d049a4e61c8f79e56c2, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 700026f446833f649a3c63b33a90a295
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
Prefab Transforms.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,25 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check Script Compilation
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 29
|
||||
Title: Check Script Compilation
|
||||
Description: Scripts in the package must compile successfully and not result in
|
||||
compilation errors
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter: []
|
||||
TestScript: {fileID: 11500000, guid: 59db88f43969db8499299bce7f4fb967, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 339e21c955642a04289482aa923e10b6
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
Script Compilation.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,25 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check Shader Compilation
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 18
|
||||
Title: Check Shader Compilation
|
||||
Description: Please make sure the shaders inside your package do not have errors
|
||||
and compile successfully.
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter: []
|
||||
TestScript: {fileID: 11500000, guid: 7abb278a6082bde4391e0779394cb85b, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1450037453608204a989ff95dca62fae
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
Shader Compilation.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,25 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check Texture Dimensions
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 24
|
||||
Title: Check Texture Dimensions
|
||||
Description: Dimensions of textures, where appropriate, should have pixel counts
|
||||
that are a power of 2
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter: []
|
||||
TestScript: {fileID: 11500000, guid: 073f1dacf3da34d4783140ae9d485d5f, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c23253393b8e28846b8e02aeaee7e152
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
Texture Dimensions.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,26 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Check Type Namespaces
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 19
|
||||
Title: Check Type Namespaces
|
||||
Description: Types in your scripts (classes, interfaces, structs, enums) should
|
||||
be nested under a namespace block to prevent them from being mistaken for other
|
||||
potential types and for better organization as a whole
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter: []
|
||||
TestScript: {fileID: 11500000, guid: 279249fa7ef8c2446b3a9f013eeedbf0, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dd110ee16e8de4d48a602349ed7a0b25
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Check
|
||||
Type Namespaces.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,27 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Remove Executable Files
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 14
|
||||
Title: Remove Executable Files
|
||||
Description: Your package must not contain an .exe, installer programs or applications.
|
||||
If your plugin requires an external program to run, please remove the installer
|
||||
program from your package and write the instructions on how to download and install
|
||||
the installer program in your documentation.
|
||||
CategoryInfo:
|
||||
IsFailFilter: 0
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter: []
|
||||
TestScript: {fileID: 11500000, guid: 8e4450592cc60e54286ad089b66db94d, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e996c53186de96e49a742d414648a809
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Remove
|
||||
Executable Files.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,30 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Remove JPG Files
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 8
|
||||
Title: Remove JPG Files
|
||||
Description: We do not allow texture images that are saved in lossy formats. Please
|
||||
save all of your images as lossless format file types, such as PNG, TGA, or PSD.
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter:
|
||||
- 2D
|
||||
- 3D
|
||||
- Animation
|
||||
- Essentials
|
||||
- VFX/Shaders
|
||||
TestScript: {fileID: 11500000, guid: 5634a12b3a8544c4585bbc280ae59ce2, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 781021ae3aa6570468e08d78e3195127
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Remove
|
||||
JPG Files.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,25 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Remove JavaScript Files
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 11
|
||||
Title: Remove JavaScript Files
|
||||
Description: JavaScript / UnityScript files are not allowed, as they are no longer
|
||||
supported.
|
||||
CategoryInfo:
|
||||
IsFailFilter: 0
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter: []
|
||||
TestScript: {fileID: 11500000, guid: ab1676bde9afba442b35fd3319c18063, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bf01c18b66907f54c99517f6a877e3e0
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Remove
|
||||
JavaScript Files.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,32 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Remove Lossy Audio Files
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 12
|
||||
Title: Remove Lossy Audio Files
|
||||
Description: 'We do not recommend audio files that are saved as .mp3 or .ogg. Please
|
||||
save all of your audio as lossless format file types, such as .wav. If you have
|
||||
non-lossy alternative files to your lossy audio files, please make sure to name
|
||||
them identically to avoid rejection. For example: ''shout.mp3'', ''shout.wav''.
|
||||
Listing of the format in the file name is also allowed and accounted for by the
|
||||
validator. For example: ''taunt MP3.mp3'', ''taunt WAV.wav''.'
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter:
|
||||
- Audio
|
||||
- Essentials
|
||||
- Templates
|
||||
TestScript: {fileID: 11500000, guid: b7205a85061273a4eb50586f13f35d35, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a48657926de5cfb47ac559a7108d03ee
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Remove
|
||||
Lossy Audio Files.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,26 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Remove Mixamo Files
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 15
|
||||
Title: Remove Mixamo Files
|
||||
Description: We do not allow or accept packages files that were made with third-party
|
||||
software, such as Mixamo, Fuse, etc. because these files are under licensing
|
||||
that does not agree with the Asset Store End User License Agreement (EULA).
|
||||
CategoryInfo:
|
||||
IsFailFilter: 0
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter: []
|
||||
TestScript: {fileID: 11500000, guid: 9df432e52aa958b44bb5e20c13d16552, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a0a44055f786ec64f86a07a214d5f831
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Remove
|
||||
Mixamo Files.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,25 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Remove SpeedTree Files
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 16
|
||||
Title: Remove SpeedTree Files
|
||||
Description: You cannot redistribute SpeedTree files on other marketplaces. Please
|
||||
remove all SpeedTree files that are in this package.
|
||||
CategoryInfo:
|
||||
IsFailFilter: 0
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter: []
|
||||
TestScript: {fileID: 11500000, guid: e06bb7e0aa4f9944abc18281c002dff4, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 305bbe67f7c644d18bc8a5b2273aa6a4
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Remove
|
||||
SpeedTree Files.asset
|
||||
uploadId: 681981
|
||||
@@ -0,0 +1,26 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d813ff809ae82f643bf975031305d541, type: 3}
|
||||
m_Name: Remove Video Files
|
||||
m_EditorClassIdentifier:
|
||||
HasBeenInitialized: 1
|
||||
Id: 13
|
||||
Title: Remove Video Files
|
||||
Description: You cannot include a video file in your package. Please upload your
|
||||
video file to an online video hosting website (Youtube, Vimeo, etc.) and include
|
||||
the link to the video in your written documentation.
|
||||
CategoryInfo:
|
||||
IsFailFilter: 1
|
||||
IsInclusiveFilter: 1
|
||||
AppliesToSubCategories: 1
|
||||
Filter: []
|
||||
TestScript: {fileID: 11500000, guid: f99724c71b0de66419b5d6e8e9bfcc2d, type: 3}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 893a0df188c2026438be48eed39b301f
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 115
|
||||
packageName: Asset Store Publishing Tools
|
||||
packageVersion: 11.4.3
|
||||
assetPath: Packages/com.unity.asset-store-tools/Editor/Validator/Scripts/Tests/Remove
|
||||
Video Files.asset
|
||||
uploadId: 681981
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user