NS归档 20250915
This commit is contained in:
parent
acf1071ea2
commit
cb4dbcbf8a
@ -101,7 +101,7 @@ namespace AxibugEmuOnline.Editors
|
||||
#endif
|
||||
string targetName = $"{Application.productName}_{titleid}.nsp";
|
||||
|
||||
string _locationPathName = $"Output/NSPBuild/{DateTime.Now.ToString("yyyyMMddHHmmss")}/{targetName}";
|
||||
string _locationPathName = $"Output/NSPBuild/{targetName}";
|
||||
var options = new BuildPlayerOptions
|
||||
{
|
||||
scenes = levels.ToArray(),
|
||||
|
||||
@ -9,7 +9,9 @@ using UnityEngine;
|
||||
|
||||
public class AxiProjectTools : EditorWindow
|
||||
{
|
||||
static string cachecfgPath = "Assets/AxiComToolCache.asset";
|
||||
static string ProjectPath => System.Environment.CurrentDirectory;
|
||||
public static string AssetsPath => ProjectPath + "\\Assets\\";
|
||||
static string cachecfgPath = "Assets/AxiComToolCache.asset";
|
||||
public static string toolSenceName = "AxiProjectTools";
|
||||
public static string outCsDir = Application.dataPath + "/AxiCom/";
|
||||
public static Dictionary<string, AxiPrefabCache_Com2GUID> ComType2GUID = new Dictionary<string, AxiPrefabCache_Com2GUID>();
|
||||
@ -502,5 +504,16 @@ public class AxiProjectTools : EditorWindow
|
||||
File.WriteAllText(filePath, newContent);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
[MenuItem("Axibug移植工具/Git-Bash打开Assets &\\")]
|
||||
public static void OpenGitBashAssets()
|
||||
{
|
||||
System.Diagnostics.Process p = new System.Diagnostics.Process();
|
||||
p.StartInfo.FileName = "C://Program Files//Git//git-bash.exe";
|
||||
p.StartInfo.Arguments = " --cd=" + AssetsPath;
|
||||
p.Start();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1,9 +1,10 @@
|
||||
#if UNITY_SWITCH
|
||||
using nn.fs;
|
||||
using System.Text.RegularExpressions;
|
||||
#endif
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Text.RegularExpressions;
|
||||
using System;
|
||||
|
||||
public class AxiNSIO
|
||||
{
|
||||
@ -106,10 +107,11 @@ public class AxiNSIO
|
||||
/// <summary>
|
||||
/// 创建目录,目录存在也会返回true
|
||||
/// </summary>
|
||||
/// <param name="filePath"></param>
|
||||
/// <param name="dirpath"></param>
|
||||
/// <returns></returns>
|
||||
public bool CreateDir(string filePath)
|
||||
public bool CreateDir(string dirpath)
|
||||
{
|
||||
UnityEngine.Debug.Log($"CreateDir: {dirpath}");
|
||||
lock (commitLock)
|
||||
{
|
||||
|
||||
@ -117,9 +119,9 @@ public class AxiNSIO
|
||||
return false;
|
||||
#else
|
||||
// 使用封装函数检查和创建父目录
|
||||
if (!EnsureParentDirectory(filePath, true))
|
||||
if (!EnsureParentDirectory(dirpath, true))
|
||||
{
|
||||
UnityEngine.Debug.LogError($"无法确保父目录,文件写入取消: {filePath}");
|
||||
UnityEngine.Debug.LogError($"无法确保父目录,文件写入取消: {dirpath}");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@ -159,6 +161,7 @@ public class AxiNSIO
|
||||
/// <returns></returns>
|
||||
public bool FileToSaveWithCreate(string filePath, byte[] data, bool immediatelyCommit = true)
|
||||
{
|
||||
UnityEngine.Debug.Log($"FileToSaveWithCreate: {filePath}");
|
||||
lock (commitLock)
|
||||
{
|
||||
#if !UNITY_SWITCH
|
||||
@ -171,16 +174,32 @@ public class AxiNSIO
|
||||
}
|
||||
|
||||
nn.Result result;
|
||||
#if UNITY_SWITCH && !UNITY_EDITOR
|
||||
// 阻止用户在保存时,退出游戏
|
||||
// Switch 条例 0080
|
||||
UnityEngine.Switch.Notification.EnterExitRequestHandlingSection();
|
||||
#endif
|
||||
// 使用封装函数检查和创建父目录
|
||||
if (!EnsureParentDirectory(filePath, true))
|
||||
|
||||
//取出父级目录
|
||||
string dirpath = string.Empty;
|
||||
//string filePath = "save:/AxibugEmu/Caches/Texture/516322966";
|
||||
string mountRoot = null;
|
||||
int colonSlashIndex = filePath.IndexOf(":/");
|
||||
if (colonSlashIndex > 0)
|
||||
mountRoot = filePath.Substring(0, colonSlashIndex + 1); // 例如 "save:"
|
||||
|
||||
int lastSlashIndex = filePath.LastIndexOf('/');
|
||||
if (lastSlashIndex >= 0)
|
||||
{
|
||||
UnityEngine.Debug.LogError($"无法确保父目录,文件写入取消: {filePath}");
|
||||
return false;
|
||||
string parent = filePath.Substring(0, lastSlashIndex);
|
||||
if (mountRoot != null && !parent.Equals(mountRoot, StringComparison.OrdinalIgnoreCase))
|
||||
dirpath = parent;
|
||||
}
|
||||
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(dirpath))
|
||||
{
|
||||
// 使用封装函数检查和创建父目录
|
||||
if (!EnsureParentDirectory(dirpath, true))
|
||||
{
|
||||
UnityEngine.Debug.LogError($"无法确保父目录,文件写入取消: {filePath}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//string directoryPath = System.IO.Path.GetDirectoryName(filePath.Replace(save_path, ""));
|
||||
@ -211,6 +230,11 @@ public class AxiNSIO
|
||||
// return false;
|
||||
//}
|
||||
|
||||
#if UNITY_SWITCH && !UNITY_EDITOR
|
||||
// 阻止用户在保存时,退出游戏
|
||||
// Switch 条例 0080
|
||||
UnityEngine.Switch.Notification.EnterExitRequestHandlingSection();
|
||||
#endif
|
||||
if (CheckPathNotFound(filePath))
|
||||
{
|
||||
UnityEngine.Debug.Log($"文件({filePath})不存在需要创建");
|
||||
@ -711,44 +735,232 @@ public class AxiNSIO
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
#if UNITY_SWITCH
|
||||
bool CreateLoopDir(string path)
|
||||
{
|
||||
// 检查路径是否存在及其类型
|
||||
nn.fs.EntryType entryType = 0;
|
||||
nn.Result result;
|
||||
List<string> needcreatedirs = new List<string>();
|
||||
string node = path;
|
||||
while (true)
|
||||
{
|
||||
if (string.IsNullOrEmpty(node) || node.EndsWith(":/"))
|
||||
break;
|
||||
|
||||
|
||||
if (!CheckPathNotFound(node))
|
||||
needcreatedirs.Insert(0, node);
|
||||
else
|
||||
break;
|
||||
|
||||
result = nn.fs.FileSystem.GetEntryType(ref entryType, node);
|
||||
if (!result.IsSuccess())
|
||||
needcreatedirs.Insert(0, node);
|
||||
else
|
||||
break;//文件已存在
|
||||
|
||||
node = System.IO.Path.GetDirectoryName(node);
|
||||
}
|
||||
|
||||
for (int i = 0; i < needcreatedirs.Count; i++)
|
||||
{
|
||||
UnityEngine.Debug.LogError($"需要创建的目录: {needcreatedirs[i]}");
|
||||
}
|
||||
|
||||
for (int i = 0; i < needcreatedirs.Count; i++)
|
||||
{
|
||||
//result = nn.fs.Directory.Create(needcreatedirs[i]);
|
||||
//if (!result.IsSuccess())
|
||||
//{
|
||||
// UnityEngine.Debug.LogError($"创建父目录失败: {result.GetErrorInfo()}");
|
||||
// return false;
|
||||
//}
|
||||
//UnityEngine.Debug.Log($"父目录 {needcreatedirs[i]} 创建成功");
|
||||
//CommitSave();
|
||||
}
|
||||
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// 解析路径并获取其所有父级目录(从直接父目录到根目录),并排除存储设备挂载根节点(如"save:"或"sd:")。
|
||||
/// 专为Switch平台设计,正确处理如"save:/"或"sd:/"开头的路径。
|
||||
/// </summary>
|
||||
/// <param name="inputPath">输入的绝对路径</param>
|
||||
/// <param name="resolvedDirectory">输出参数,解析出的最直接目录(文件所在目录或目录自身)</param>
|
||||
/// <param name="parentDirectories">输出参数,从直接父目录到挂载点下一级的列表(不包含挂载根节点)</param>
|
||||
/// <returns>操作是否成功(路径格式基本有效)</returns>
|
||||
public bool TryGetDirectoryAndParentsExcludingRoot(string inputPath, out string resolvedDirectory, out List<string> parentDirectories)
|
||||
{
|
||||
// 捕获路径中包含非法字符引发的异常
|
||||
//UnityEngine.Debug.Log($"TryGetDirectoryAndParentsExcludingRoot->{inputPath}");
|
||||
resolvedDirectory = null;
|
||||
parentDirectories = new List<string>();
|
||||
|
||||
if (string.IsNullOrWhiteSpace(inputPath))
|
||||
{
|
||||
UnityEngine.Debug.Log($"TryGetDirectoryAndParentsExcludingRoot->string.IsNullOrWhiteSpace({inputPath})==false");
|
||||
return false;
|
||||
}
|
||||
|
||||
string normalizedPath = inputPath.Replace('\\', '/').Trim(); // 统一使用正斜杠
|
||||
//UnityEngine.Debug.Log($"TryGetDirectoryAndParentsExcludingRoot->normalizedPath=>{normalizedPath}");
|
||||
try
|
||||
{
|
||||
// 1. 判断路径类型并解析出最直接的目标目录
|
||||
bool isLikelyFile = false;
|
||||
|
||||
if (normalizedPath.EndsWith("/"))
|
||||
{
|
||||
//UnityEngine.Debug.Log($"TryGetDirectoryAndParentsExcludingRoot->normalizedPath.EndsWith(\"/\") == true");
|
||||
resolvedDirectory = normalizedPath.TrimEnd('/');
|
||||
}
|
||||
else
|
||||
{
|
||||
int lastSeparatorIndex = normalizedPath.LastIndexOf('/');
|
||||
//UnityEngine.Debug.Log($"TryGetDirectoryAndParentsExcludingRoot->lastSeparatorIndex->{lastSeparatorIndex}");
|
||||
string lastPart = (lastSeparatorIndex >= 0) ? normalizedPath.Substring(lastSeparatorIndex + 1) : normalizedPath;
|
||||
|
||||
if (string.IsNullOrEmpty(lastPart) || lastPart.Equals("..") || !lastPart.Contains("."))
|
||||
{
|
||||
//UnityEngine.Debug.Log($"TryGetDirectoryAndParentsExcludingRoot->step1");
|
||||
resolvedDirectory = normalizedPath;
|
||||
}
|
||||
else
|
||||
{
|
||||
//UnityEngine.Debug.Log($"TryGetDirectoryAndParentsExcludingRoot->step2");
|
||||
isLikelyFile = true;
|
||||
//UnityEngine.Debug.Log($"TryGetDirectoryAndParentsExcludingRoot->lastSeparatorIndex=>{lastSeparatorIndex}");
|
||||
if (lastSeparatorIndex >= 0)
|
||||
{
|
||||
resolvedDirectory = normalizedPath.Substring(0, lastSeparatorIndex);
|
||||
}
|
||||
else
|
||||
{
|
||||
resolvedDirectory = normalizedPath; // 可能是根目录下的文件,但这种情况在Switch特殊路径中较少
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//UnityEngine.Debug.Log($"TryGetDirectoryAndParentsExcludingRoot->resolvedDirectory=>{resolvedDirectory}");
|
||||
if (string.IsNullOrEmpty(resolvedDirectory))
|
||||
{
|
||||
//UnityEngine.Debug.LogError($"TryGetDirectoryAndParentsExcludingRoot->string.IsNullOrEmpty(resolvedDirectory) == false");
|
||||
return false;
|
||||
}
|
||||
|
||||
//UnityEngine.Debug.Log($"TryGetDirectoryAndParentsExcludingRoot->step3");
|
||||
// 2. 提取并检查挂载根节点(如 "save:" 或 "sd:")
|
||||
string mountRoot = null;
|
||||
int colonSlashIndex = resolvedDirectory.IndexOf(":/");
|
||||
if (colonSlashIndex > 0)
|
||||
{
|
||||
mountRoot = resolvedDirectory.Substring(0, colonSlashIndex + 1); // 例如 "save:"
|
||||
}
|
||||
//UnityEngine.Debug.Log($"TryGetDirectoryAndParentsExcludingRoot->mountRoot=>{mountRoot}");
|
||||
|
||||
// 检查挂载状态
|
||||
if (!IsMountPointAccessible(mountRoot + "/"))
|
||||
{
|
||||
UnityEngine.Debug.LogError($"挂载点 {mountRoot + "/"} 未挂载,无法操作路径 {inputPath}");
|
||||
return false;
|
||||
}
|
||||
|
||||
//UnityEngine.Debug.Log($"TryGetDirectoryAndParentsExcludingRoot->step4");
|
||||
// 3. 手动分割路径,收集父目录,并在到达挂载根节点时停止
|
||||
string currentPath = resolvedDirectory;
|
||||
//UnityEngine.Debug.Log($"TryGetDirectoryAndParentsExcludingRoot->currentPath=>{currentPath}");
|
||||
while (!string.IsNullOrEmpty(currentPath))
|
||||
{
|
||||
//UnityEngine.Debug.Log($"TryGetDirectoryAndParentsExcludingRoot->step5");
|
||||
// 检查当前路径是否已经是挂载根节点(例如 "save:")
|
||||
if (mountRoot != null && currentPath.Equals(mountRoot, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
break; // 停止添加,不将挂载根节点加入父目录列表
|
||||
}
|
||||
|
||||
parentDirectories.Add(currentPath); // 将当前层级的路径加入列表
|
||||
|
||||
int lastSlashIndex = currentPath.LastIndexOf('/');
|
||||
if (lastSlashIndex < 0)
|
||||
{
|
||||
break; // 没有分隔符了,跳出循环
|
||||
}
|
||||
|
||||
string nextParent = currentPath.Substring(0, lastSlashIndex);
|
||||
|
||||
// 检查下一级父目录是否就是挂载根节点(例如 "save:"),如果是,则停止
|
||||
if (mountRoot != null && nextParent.Equals(mountRoot, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
// 可以选择是否将 mountRoot 加入列表,这里根据需求不加入
|
||||
break;
|
||||
}
|
||||
|
||||
currentPath = nextParent;
|
||||
}
|
||||
//UnityEngine.Debug.Log($"TryGetDirectoryAndParentsExcludingRoot->step6 True Return");
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (ArgumentException ex)
|
||||
{
|
||||
// 捕获路径中包含非法字符引发的异常
|
||||
UnityEngine.Debug.LogError($"路径中包含非法字符: {ex.Message}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool EnsureParentDirectory(string filePath, bool bAutoCreateDir = true)
|
||||
{
|
||||
#if !UNITY_SWITCH
|
||||
return false;
|
||||
#else
|
||||
// 参数校验
|
||||
if (string.IsNullOrEmpty(filePath))
|
||||
//// 参数校验
|
||||
//if (string.IsNullOrEmpty(filePath))
|
||||
//{
|
||||
// UnityEngine.Debug.LogError($"无效参数:filePath={filePath}");
|
||||
// return false;
|
||||
//}
|
||||
|
||||
//// 提取路径前缀(如 save:/、sd:/)
|
||||
//int prefixEndIndex = filePath.IndexOf(":/");
|
||||
//if (prefixEndIndex == -1)
|
||||
//{
|
||||
// UnityEngine.Debug.LogError($"文件路径 {filePath} 格式无效,未找到 ':/' 前缀");
|
||||
// return false;
|
||||
//}
|
||||
//string pathPrefix = filePath.Substring(0, prefixEndIndex + 2); // 提取前缀,例如 "save:/"
|
||||
//string relativePath = filePath.Substring(prefixEndIndex + 2); // 移除前缀,得到相对路径
|
||||
|
||||
//// 检查挂载状态
|
||||
//if (!IsMountPointAccessible(pathPrefix))
|
||||
//{
|
||||
// UnityEngine.Debug.LogError($"挂载点 {pathPrefix} 未挂载,无法操作路径 {filePath}");
|
||||
// return false;
|
||||
//}
|
||||
|
||||
//// 提取父目录路径
|
||||
//string directoryPath = System.IO.Path.GetDirectoryName(relativePath); // 获取父目录相对路径
|
||||
//UnityEngine.Debug.Log($"提取 {relativePath} 的 父级路径:{directoryPath}");
|
||||
//if (string.IsNullOrEmpty(directoryPath))
|
||||
//{
|
||||
// UnityEngine.Debug.Log($"文件路径 {filePath} 无需创建父目录(位于根目录)");
|
||||
// return true; // 根目录无需创建
|
||||
//}
|
||||
|
||||
//string fullDirectoryPath = $"{pathPrefix}{directoryPath}"; // 拼接完整父目录路径
|
||||
|
||||
|
||||
if (!TryGetDirectoryAndParentsExcludingRoot(filePath, out string fullDirectoryPath, out List<string> parentDirectories))
|
||||
{
|
||||
UnityEngine.Debug.LogError($"无效参数:filePath={filePath}");
|
||||
UnityEngine.Debug.LogError($"TryGetDirectoryAndParentsExcludingRoot 操作失败:{filePath}");
|
||||
return false;
|
||||
}
|
||||
|
||||
// 提取路径前缀(如 save:/、sd:/)
|
||||
int prefixEndIndex = filePath.IndexOf(":/");
|
||||
if (prefixEndIndex == -1)
|
||||
{
|
||||
UnityEngine.Debug.LogError($"文件路径 {filePath} 格式无效,未找到 ':/' 前缀");
|
||||
return false;
|
||||
}
|
||||
string pathPrefix = filePath.Substring(0, prefixEndIndex + 2); // 提取前缀,例如 "save:/"
|
||||
string relativePath = filePath.Substring(prefixEndIndex + 2); // 移除前缀,得到相对路径
|
||||
|
||||
// 检查挂载状态
|
||||
if (!IsMountPointAccessible(pathPrefix))
|
||||
{
|
||||
UnityEngine.Debug.LogError($"挂载点 {pathPrefix} 未挂载,无法操作路径 {filePath}");
|
||||
return false;
|
||||
}
|
||||
|
||||
// 提取父目录路径
|
||||
string directoryPath = System.IO.Path.GetDirectoryName(relativePath); // 获取父目录相对路径
|
||||
if (string.IsNullOrEmpty(directoryPath))
|
||||
{
|
||||
UnityEngine.Debug.Log($"文件路径 {filePath} 无需创建父目录(位于根目录)");
|
||||
return true; // 根目录无需创建
|
||||
}
|
||||
|
||||
string fullDirectoryPath = $"{pathPrefix}{directoryPath}"; // 拼接完整父目录路径
|
||||
UnityEngine.Debug.Log($"检查父目录: {fullDirectoryPath}");
|
||||
|
||||
// 检查路径是否存在及其类型
|
||||
@ -758,46 +970,45 @@ public class AxiNSIO
|
||||
{
|
||||
if (bAutoCreateDir)
|
||||
{
|
||||
//List<string> NeedCreateList = new List<string>();
|
||||
//NeedCreateList.Add(fullDirectoryPath);
|
||||
//nn.fs.EntryType entryTypeLoop = 0;
|
||||
//nn.Result resultloop;
|
||||
//string NodeLoop = fullDirectoryPath;
|
||||
//while (!NodeLoop.EndsWith(":/"))
|
||||
//{
|
||||
// NodeLoop = System.IO.Path.GetDirectoryName(NodeLoop);
|
||||
// if (NodeLoop.EndsWith(":/"))
|
||||
// break;
|
||||
// resultloop = nn.fs.FileSystem.GetEntryType(ref entryTypeLoop, NodeLoop);
|
||||
// if (!resultloop.IsSuccess() && nn.fs.FileSystem.ResultPathNotFound.Includes(resultloop))
|
||||
// {
|
||||
// NeedCreateList.Add(NodeLoop);
|
||||
// }
|
||||
//}
|
||||
|
||||
//for(int i = NeedCreateList.Count - 1; i >= 0; i--)
|
||||
//{
|
||||
// string dirToCreate = NeedCreateList[i];
|
||||
// // 路径不存在,尝试创建
|
||||
// UnityEngine.Debug.Log($"父目录 {dirToCreate} 不存在,尝试创建 (判断依据 result=>{result.ToString()})");
|
||||
// resultloop = nn.fs.Directory.Create(dirToCreate);
|
||||
// if (!resultloop.IsSuccess())
|
||||
// {
|
||||
// UnityEngine.Debug.LogError($"创建父目录失败: {resultloop.GetErrorInfo()}");
|
||||
// return false;
|
||||
// }
|
||||
// UnityEngine.Debug.Log($"父目录 {dirToCreate} 创建成功");
|
||||
//}
|
||||
//return true;
|
||||
|
||||
// 路径不存在,尝试创建
|
||||
UnityEngine.Debug.Log($"父目录 {fullDirectoryPath} 不存在,尝试创建 (判断依据 result=>{result.ToString()})");
|
||||
result = nn.fs.Directory.Create(fullDirectoryPath);
|
||||
if (!result.IsSuccess())
|
||||
|
||||
for (int i = parentDirectories.Count - 1; i >= 0; i--)
|
||||
{
|
||||
UnityEngine.Debug.LogError($"创建父目录失败: {result.GetErrorInfo()}");
|
||||
return false;
|
||||
UnityEngine.Debug.Log($">>待检查目录: {parentDirectories[i]}");
|
||||
}
|
||||
|
||||
for (int i = parentDirectories.Count - 1; i >= 0; i--)
|
||||
{
|
||||
string dir = parentDirectories[i];
|
||||
if (CheckPathNotFound(dir))
|
||||
{
|
||||
UnityEngine.Debug.Log($"需要创建的目录: {dir}");
|
||||
result = nn.fs.Directory.Create(dir);
|
||||
if (!result.IsSuccess())
|
||||
{
|
||||
UnityEngine.Debug.LogError($"创建父 {dir} 目录失败: {result.GetErrorInfo()}");
|
||||
return false;
|
||||
}
|
||||
UnityEngine.Debug.Log($"父目录 {dir} 创建成功");
|
||||
//CommitSave();
|
||||
}
|
||||
else
|
||||
{
|
||||
UnityEngine.Debug.Log($"目录已存在,无需创建: {dir}");
|
||||
}
|
||||
}
|
||||
|
||||
//result = nn.fs.Directory.Create(fullDirectoryPath);
|
||||
//if (!result.IsSuccess())
|
||||
//{
|
||||
// UnityEngine.Debug.LogError($"创建父目录失败: {result.GetErrorInfo()}");
|
||||
// return false;
|
||||
//}
|
||||
|
||||
//if (!CreateLoopDir(fullDirectoryPath))
|
||||
// return false;
|
||||
|
||||
UnityEngine.Debug.Log($"父目录 {fullDirectoryPath} 创建成功");
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 08dce0a477353b34f80bbb05e9c20fd4
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3d7d7a61a5341904eb3c65af025b1d86
|
||||
folderAsset: yes
|
||||
timeCreated: 1510075633
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,55 @@
|
||||
#if UNITY_EDITOR || UNITY_ANDROID
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
// Credit: https://stackoverflow.com/a/41018028/2373034
|
||||
namespace IngameDebugConsole
|
||||
{
|
||||
public class DebugLogLogcatListener : AndroidJavaProxy
|
||||
{
|
||||
private Queue<string> queuedLogs;
|
||||
private AndroidJavaObject nativeObject;
|
||||
|
||||
public DebugLogLogcatListener() : base( "com.yasirkula.unity.DebugConsoleLogcatLogReceiver" )
|
||||
{
|
||||
queuedLogs = new Queue<string>( 16 );
|
||||
}
|
||||
|
||||
~DebugLogLogcatListener()
|
||||
{
|
||||
Stop();
|
||||
|
||||
if( nativeObject != null )
|
||||
nativeObject.Dispose();
|
||||
}
|
||||
|
||||
public void Start( string arguments )
|
||||
{
|
||||
if( nativeObject == null )
|
||||
nativeObject = new AndroidJavaObject( "com.yasirkula.unity.DebugConsoleLogcatLogger" );
|
||||
|
||||
nativeObject.Call( "Start", this, arguments );
|
||||
}
|
||||
|
||||
public void Stop()
|
||||
{
|
||||
if( nativeObject != null )
|
||||
nativeObject.Call( "Stop" );
|
||||
}
|
||||
|
||||
[UnityEngine.Scripting.Preserve]
|
||||
public void OnLogReceived( string log )
|
||||
{
|
||||
queuedLogs.Enqueue( log );
|
||||
}
|
||||
|
||||
public string GetLog()
|
||||
{
|
||||
if( queuedLogs.Count > 0 )
|
||||
return queuedLogs.Dequeue();
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dd3b7385882055d4a8c2b91deb6b2470
|
||||
timeCreated: 1510076185
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@ -0,0 +1,33 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bf909fab1c14af446b0a854de42289b2
|
||||
timeCreated: 1510086220
|
||||
licenseType: Store
|
||||
PluginImporter:
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
platformData:
|
||||
data:
|
||||
first:
|
||||
Android: Android
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
data:
|
||||
first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
data:
|
||||
first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 86f54622630720f4abe279acdbb8886f
|
||||
folderAsset: yes
|
||||
timeCreated: 1561217660
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,195 @@
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace IngameDebugConsole
|
||||
{
|
||||
[CustomEditor( typeof( DebugLogManager ) )]
|
||||
public class DebugLogManagerEditor : Editor
|
||||
{
|
||||
private SerializedProperty singleton;
|
||||
private SerializedProperty minimumHeight;
|
||||
private SerializedProperty enableHorizontalResizing;
|
||||
private SerializedProperty resizeFromRight;
|
||||
private SerializedProperty minimumWidth;
|
||||
private SerializedProperty logWindowOpacity;
|
||||
private SerializedProperty popupOpacity;
|
||||
private SerializedProperty popupVisibility;
|
||||
private SerializedProperty popupVisibilityLogFilter;
|
||||
private SerializedProperty startMinimized;
|
||||
private SerializedProperty toggleWithKey;
|
||||
private SerializedProperty toggleKey;
|
||||
private SerializedProperty enableSearchbar;
|
||||
private SerializedProperty topSearchbarMinWidth;
|
||||
private SerializedProperty receiveLogsWhileInactive;
|
||||
private SerializedProperty receiveInfoLogs;
|
||||
private SerializedProperty receiveWarningLogs;
|
||||
private SerializedProperty receiveErrorLogs;
|
||||
private SerializedProperty receiveExceptionLogs;
|
||||
private SerializedProperty captureLogTimestamps;
|
||||
private SerializedProperty alwaysDisplayTimestamps;
|
||||
private SerializedProperty maxLogCount;
|
||||
private SerializedProperty logsToRemoveAfterMaxLogCount;
|
||||
private SerializedProperty queuedLogLimit;
|
||||
private SerializedProperty clearCommandAfterExecution;
|
||||
private SerializedProperty commandHistorySize;
|
||||
private SerializedProperty showCommandSuggestions;
|
||||
private SerializedProperty receiveLogcatLogsInAndroid;
|
||||
private SerializedProperty logcatArguments;
|
||||
private SerializedProperty avoidScreenCutout;
|
||||
private SerializedProperty popupAvoidsScreenCutout;
|
||||
private SerializedProperty autoFocusOnCommandInputField;
|
||||
|
||||
#if UNITY_2017_3_OR_NEWER
|
||||
private readonly GUIContent popupVisibilityLogFilterLabel = new GUIContent( "Log Filter", "Determines which log types will show the popup on screen" );
|
||||
#endif
|
||||
private readonly GUIContent receivedLogTypesLabel = new GUIContent( "Received Log Types", "Only these logs will be received by the console window, other logs will simply be skipped" );
|
||||
private readonly GUIContent receiveInfoLogsLabel = new GUIContent( "Info" );
|
||||
private readonly GUIContent receiveWarningLogsLabel = new GUIContent( "Warning" );
|
||||
private readonly GUIContent receiveErrorLogsLabel = new GUIContent( "Error" );
|
||||
private readonly GUIContent receiveExceptionLogsLabel = new GUIContent( "Exception" );
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
singleton = serializedObject.FindProperty( "singleton" );
|
||||
minimumHeight = serializedObject.FindProperty( "minimumHeight" );
|
||||
enableHorizontalResizing = serializedObject.FindProperty( "enableHorizontalResizing" );
|
||||
resizeFromRight = serializedObject.FindProperty( "resizeFromRight" );
|
||||
minimumWidth = serializedObject.FindProperty( "minimumWidth" );
|
||||
logWindowOpacity = serializedObject.FindProperty( "logWindowOpacity" );
|
||||
popupOpacity = serializedObject.FindProperty( "popupOpacity" );
|
||||
popupVisibility = serializedObject.FindProperty( "popupVisibility" );
|
||||
popupVisibilityLogFilter = serializedObject.FindProperty( "popupVisibilityLogFilter" );
|
||||
startMinimized = serializedObject.FindProperty( "startMinimized" );
|
||||
toggleWithKey = serializedObject.FindProperty( "toggleWithKey" );
|
||||
#if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER
|
||||
toggleKey = serializedObject.FindProperty( "toggleBinding" );
|
||||
#else
|
||||
toggleKey = serializedObject.FindProperty( "toggleKey" );
|
||||
#endif
|
||||
enableSearchbar = serializedObject.FindProperty( "enableSearchbar" );
|
||||
topSearchbarMinWidth = serializedObject.FindProperty( "topSearchbarMinWidth" );
|
||||
receiveLogsWhileInactive = serializedObject.FindProperty( "receiveLogsWhileInactive" );
|
||||
receiveInfoLogs = serializedObject.FindProperty( "receiveInfoLogs" );
|
||||
receiveWarningLogs = serializedObject.FindProperty( "receiveWarningLogs" );
|
||||
receiveErrorLogs = serializedObject.FindProperty( "receiveErrorLogs" );
|
||||
receiveExceptionLogs = serializedObject.FindProperty( "receiveExceptionLogs" );
|
||||
captureLogTimestamps = serializedObject.FindProperty( "captureLogTimestamps" );
|
||||
alwaysDisplayTimestamps = serializedObject.FindProperty( "alwaysDisplayTimestamps" );
|
||||
maxLogCount = serializedObject.FindProperty( "maxLogCount" );
|
||||
logsToRemoveAfterMaxLogCount = serializedObject.FindProperty( "logsToRemoveAfterMaxLogCount" );
|
||||
queuedLogLimit = serializedObject.FindProperty( "queuedLogLimit" );
|
||||
clearCommandAfterExecution = serializedObject.FindProperty( "clearCommandAfterExecution" );
|
||||
commandHistorySize = serializedObject.FindProperty( "commandHistorySize" );
|
||||
showCommandSuggestions = serializedObject.FindProperty( "showCommandSuggestions" );
|
||||
receiveLogcatLogsInAndroid = serializedObject.FindProperty( "receiveLogcatLogsInAndroid" );
|
||||
logcatArguments = serializedObject.FindProperty( "logcatArguments" );
|
||||
avoidScreenCutout = serializedObject.FindProperty( "avoidScreenCutout" );
|
||||
popupAvoidsScreenCutout = serializedObject.FindProperty( "popupAvoidsScreenCutout" );
|
||||
autoFocusOnCommandInputField = serializedObject.FindProperty( "autoFocusOnCommandInputField" );
|
||||
}
|
||||
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
serializedObject.Update();
|
||||
|
||||
EditorGUILayout.PropertyField( singleton );
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.PropertyField( minimumHeight );
|
||||
|
||||
EditorGUILayout.PropertyField( enableHorizontalResizing );
|
||||
if( enableHorizontalResizing.boolValue )
|
||||
{
|
||||
DrawSubProperty( resizeFromRight );
|
||||
DrawSubProperty( minimumWidth );
|
||||
}
|
||||
|
||||
EditorGUILayout.PropertyField( avoidScreenCutout );
|
||||
DrawSubProperty( popupAvoidsScreenCutout );
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.PropertyField( startMinimized );
|
||||
EditorGUILayout.PropertyField( logWindowOpacity );
|
||||
EditorGUILayout.PropertyField( popupOpacity );
|
||||
|
||||
EditorGUILayout.PropertyField( popupVisibility );
|
||||
if( popupVisibility.intValue == (int) PopupVisibility.WhenLogReceived )
|
||||
{
|
||||
EditorGUI.indentLevel++;
|
||||
#if UNITY_2017_3_OR_NEWER
|
||||
Rect rect = EditorGUILayout.GetControlRect();
|
||||
EditorGUI.BeginProperty( rect, GUIContent.none, popupVisibilityLogFilter );
|
||||
popupVisibilityLogFilter.intValue = (int) (DebugLogFilter) EditorGUI.EnumFlagsField( rect, popupVisibilityLogFilterLabel, (DebugLogFilter) popupVisibilityLogFilter.intValue );
|
||||
#else
|
||||
EditorGUI.BeginProperty( new Rect(), GUIContent.none, popupVisibilityLogFilter );
|
||||
EditorGUI.BeginChangeCheck();
|
||||
|
||||
bool infoLog = EditorGUILayout.Toggle( "Info", ( (DebugLogFilter) popupVisibilityLogFilter.intValue & DebugLogFilter.Info ) == DebugLogFilter.Info );
|
||||
bool warningLog = EditorGUILayout.Toggle( "Warning", ( (DebugLogFilter) popupVisibilityLogFilter.intValue & DebugLogFilter.Warning ) == DebugLogFilter.Warning );
|
||||
bool errorLog = EditorGUILayout.Toggle( "Error", ( (DebugLogFilter) popupVisibilityLogFilter.intValue & DebugLogFilter.Error ) == DebugLogFilter.Error );
|
||||
|
||||
if( EditorGUI.EndChangeCheck() )
|
||||
popupVisibilityLogFilter.intValue = ( infoLog ? (int) DebugLogFilter.Info : 0 ) | ( warningLog ? (int) DebugLogFilter.Warning : 0 ) | ( errorLog ? (int) DebugLogFilter.Error : 0 );
|
||||
#endif
|
||||
EditorGUI.EndProperty();
|
||||
EditorGUI.indentLevel--;
|
||||
}
|
||||
|
||||
EditorGUILayout.PropertyField( toggleWithKey );
|
||||
if( toggleWithKey.boolValue )
|
||||
DrawSubProperty( toggleKey );
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.PropertyField( enableSearchbar );
|
||||
if( enableSearchbar.boolValue )
|
||||
DrawSubProperty( topSearchbarMinWidth );
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.PropertyField( receiveLogsWhileInactive );
|
||||
|
||||
EditorGUILayout.PrefixLabel( receivedLogTypesLabel );
|
||||
EditorGUI.indentLevel++;
|
||||
EditorGUILayout.PropertyField( receiveInfoLogs, receiveInfoLogsLabel );
|
||||
EditorGUILayout.PropertyField( receiveWarningLogs, receiveWarningLogsLabel );
|
||||
EditorGUILayout.PropertyField( receiveErrorLogs, receiveErrorLogsLabel );
|
||||
EditorGUILayout.PropertyField( receiveExceptionLogs, receiveExceptionLogsLabel );
|
||||
EditorGUI.indentLevel--;
|
||||
|
||||
EditorGUILayout.PropertyField( receiveLogcatLogsInAndroid );
|
||||
if( receiveLogcatLogsInAndroid.boolValue )
|
||||
DrawSubProperty( logcatArguments );
|
||||
|
||||
EditorGUILayout.PropertyField( captureLogTimestamps );
|
||||
if( captureLogTimestamps.boolValue )
|
||||
DrawSubProperty( alwaysDisplayTimestamps );
|
||||
|
||||
EditorGUILayout.PropertyField( maxLogCount );
|
||||
DrawSubProperty( logsToRemoveAfterMaxLogCount );
|
||||
|
||||
EditorGUILayout.PropertyField( queuedLogLimit );
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
EditorGUILayout.PropertyField( clearCommandAfterExecution );
|
||||
EditorGUILayout.PropertyField( commandHistorySize );
|
||||
EditorGUILayout.PropertyField( showCommandSuggestions );
|
||||
EditorGUILayout.PropertyField( autoFocusOnCommandInputField );
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
DrawPropertiesExcluding( serializedObject, "m_Script" );
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
}
|
||||
|
||||
private void DrawSubProperty( SerializedProperty property )
|
||||
{
|
||||
EditorGUI.indentLevel++;
|
||||
EditorGUILayout.PropertyField( property );
|
||||
EditorGUI.indentLevel--;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4c23e5c521cb0c54b9a638b2a653d1d3
|
||||
timeCreated: 1561217671
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "IngameDebugConsole.Editor",
|
||||
"references": [
|
||||
"IngameDebugConsole.Runtime"
|
||||
],
|
||||
"includePlatforms": [
|
||||
"Editor"
|
||||
],
|
||||
"excludePlatforms": [],
|
||||
"allowUnsafeCode": false,
|
||||
"overrideReferences": false,
|
||||
"precompiledReferences": [],
|
||||
"autoReferenced": true,
|
||||
"defineConstraints": [],
|
||||
"versionDefines": [],
|
||||
"noEngineReferences": false
|
||||
}
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 466e67dabd1db22468246c39eddb6c3f
|
||||
AssemblyDefinitionImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,6 @@
|
||||
{
|
||||
"name": "IngameDebugConsole.Runtime",
|
||||
"references": [
|
||||
"Unity.InputSystem"
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3de88c88fbbb8f944b9210d496af9762
|
||||
AssemblyDefinitionImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 67117722a812a2e46ab8cb8eafbf5f5e
|
||||
timeCreated: 1466014755
|
||||
licenseType: Store
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7dbc36665bc0d684db9a4447e27a7a4b
|
||||
folderAsset: yes
|
||||
timeCreated: 1520417401
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,87 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1001 &100100000
|
||||
Prefab:
|
||||
m_ObjectHideFlags: 1
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications: []
|
||||
m_RemovedComponents: []
|
||||
m_ParentPrefab: {fileID: 0}
|
||||
m_RootGameObject: {fileID: 1386426139070838}
|
||||
m_IsPrefabParent: 1
|
||||
--- !u!1 &1386426139070838
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
serializedVersion: 5
|
||||
m_Component:
|
||||
- component: {fileID: 224955737853170496}
|
||||
- component: {fileID: 222541766812100524}
|
||||
- component: {fileID: 114169395487023046}
|
||||
m_Layer: 5
|
||||
m_Name: CommandSuggestion
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!114 &114169395487023046
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 1386426139070838}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1}
|
||||
m_RaycastTarget: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
|
||||
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_FontData:
|
||||
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_FontSize: 16
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 1
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 3
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 1
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: help
|
||||
--- !u!222 &222541766812100524
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 1386426139070838}
|
||||
--- !u!224 &224955737853170496
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 1386426139070838}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5e66896448428cf46a1854dbdc014914
|
||||
timeCreated: 1601390136
|
||||
licenseType: Store
|
||||
NativeFormatImporter:
|
||||
mainObjectFileID: 100100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,640 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &104862
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
serializedVersion: 5
|
||||
m_Component:
|
||||
- component: {fileID: 22461494}
|
||||
- component: {fileID: 22233942}
|
||||
- component: {fileID: 11411806}
|
||||
m_Layer: 5
|
||||
m_Name: LogCount
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 0
|
||||
--- !u!1 &151462
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
serializedVersion: 5
|
||||
m_Component:
|
||||
- component: {fileID: 22420350}
|
||||
- component: {fileID: 22200920}
|
||||
- component: {fileID: 11432936}
|
||||
m_Layer: 5
|
||||
m_Name: LogCountText
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!1 &152362
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
serializedVersion: 5
|
||||
m_Component:
|
||||
- component: {fileID: 22427300}
|
||||
- component: {fileID: 22262284}
|
||||
- component: {fileID: 11404142}
|
||||
m_Layer: 5
|
||||
m_Name: LogType
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!1 &166880
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
serializedVersion: 5
|
||||
m_Component:
|
||||
- component: {fileID: 22479264}
|
||||
- component: {fileID: 22288988}
|
||||
- component: {fileID: 11459012}
|
||||
- component: {fileID: 11408050}
|
||||
- component: {fileID: 11456372}
|
||||
- component: {fileID: 225819852034701160}
|
||||
m_Layer: 5
|
||||
m_Name: DebugLogItem
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!114 &11404142
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 152362}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
|
||||
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_Sprite: {fileID: 21300000, guid: 33b115bf5efdfa04d8e2e0b70a6643cd, type: 3}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
--- !u!114 &11408050
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 166880}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d2ea291be9de70a4abfec595203c96c1, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
transformComponent: {fileID: 22479264}
|
||||
imageComponent: {fileID: 11459012}
|
||||
canvasGroupComponent: {fileID: 225819852034701160}
|
||||
logText: {fileID: 114694493629914950}
|
||||
logTypeImage: {fileID: 11404142}
|
||||
logCountParent: {fileID: 104862}
|
||||
logCountText: {fileID: 11432936}
|
||||
copyLogButton: {fileID: 224006190298411330}
|
||||
--- !u!114 &11411806
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 104862}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.42647058, g: 0.42647058, b: 0.42647058, a: 1}
|
||||
m_RaycastTarget: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
|
||||
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_Sprite: {fileID: 21300000, guid: b3f0d976f6d6802479d6465d11b3aa68, type: 3}
|
||||
m_Type: 1
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
--- !u!114 &11432936
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 151462}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1}
|
||||
m_RaycastTarget: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
|
||||
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_FontData:
|
||||
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_FontSize: 16
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 1
|
||||
m_MinSize: 1
|
||||
m_MaxSize: 16
|
||||
m_Alignment: 4
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 1
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: 1
|
||||
--- !u!114 &11456372
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 166880}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Navigation:
|
||||
m_Mode: 3
|
||||
m_SelectOnUp: {fileID: 0}
|
||||
m_SelectOnDown: {fileID: 0}
|
||||
m_SelectOnLeft: {fileID: 0}
|
||||
m_SelectOnRight: {fileID: 0}
|
||||
m_Transition: 1
|
||||
m_Colors:
|
||||
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||
m_ColorMultiplier: 1
|
||||
m_FadeDuration: 0.1
|
||||
m_SpriteState:
|
||||
m_HighlightedSprite: {fileID: 0}
|
||||
m_PressedSprite: {fileID: 0}
|
||||
m_DisabledSprite: {fileID: 0}
|
||||
m_AnimationTriggers:
|
||||
m_NormalTrigger: Normal
|
||||
m_HighlightedTrigger: Highlighted
|
||||
m_PressedTrigger: Pressed
|
||||
m_DisabledTrigger: Disabled
|
||||
m_Interactable: 1
|
||||
m_TargetGraphic: {fileID: 11459012}
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,
|
||||
Culture=neutral, PublicKeyToken=null
|
||||
--- !u!114 &11459012
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 166880}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.23529412, g: 0.23529412, b: 0.23529412, a: 0.697}
|
||||
m_RaycastTarget: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
|
||||
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_Sprite: {fileID: 21300000, guid: 98e8e1cf8dc7dbf469617c2e40c8a944, type: 3}
|
||||
m_Type: 1
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
--- !u!222 &22200920
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 151462}
|
||||
--- !u!222 &22233942
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 104862}
|
||||
--- !u!222 &22262284
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 152362}
|
||||
--- !u!222 &22288988
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 166880}
|
||||
--- !u!224 &22420350
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 151462}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 22461494}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: -2, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!224 &22427300
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 152362}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 22479264}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0.5}
|
||||
m_AnchorMax: {x: 0, y: 0.5}
|
||||
m_AnchoredPosition: {x: 18, y: 0}
|
||||
m_SizeDelta: {x: 25, y: 25}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!224 &22461494
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 104862}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children:
|
||||
- {fileID: 22420350}
|
||||
m_Father: {fileID: 22479264}
|
||||
m_RootOrder: 2
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 1, y: 0.5}
|
||||
m_AnchorMax: {x: 1, y: 0.5}
|
||||
m_AnchoredPosition: {x: -28, y: 0}
|
||||
m_SizeDelta: {x: 38, y: 28}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!224 &22479264
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 166880}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children:
|
||||
- {fileID: 22427300}
|
||||
- {fileID: 224737693311518052}
|
||||
- {fileID: 22461494}
|
||||
- {fileID: 224006190298411330}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 35}
|
||||
m_Pivot: {x: 0, y: 1}
|
||||
--- !u!1001 &100100000
|
||||
Prefab:
|
||||
m_ObjectHideFlags: 1
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications: []
|
||||
m_RemovedComponents: []
|
||||
m_ParentPrefab: {fileID: 0}
|
||||
m_RootGameObject: {fileID: 166880}
|
||||
m_IsPrefabParent: 1
|
||||
--- !u!1 &1396836967994216
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
serializedVersion: 5
|
||||
m_Component:
|
||||
- component: {fileID: 224006190298411330}
|
||||
- component: {fileID: 222870443111501910}
|
||||
- component: {fileID: 114119781176956926}
|
||||
- component: {fileID: 114694923173451186}
|
||||
m_Layer: 5
|
||||
m_Name: CopyLogButton
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 0
|
||||
--- !u!1 &1503640463151286
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
serializedVersion: 5
|
||||
m_Component:
|
||||
- component: {fileID: 224887990600088790}
|
||||
- component: {fileID: 222313182602304162}
|
||||
- component: {fileID: 114549765989288124}
|
||||
m_Layer: 5
|
||||
m_Name: Text
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!1 &1785910143472904
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
serializedVersion: 5
|
||||
m_Component:
|
||||
- component: {fileID: 224737693311518052}
|
||||
- component: {fileID: 222175805939703770}
|
||||
- component: {fileID: 114694493629914950}
|
||||
m_Layer: 5
|
||||
m_Name: LogText
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!114 &114119781176956926
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 1396836967994216}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.42647058, g: 0.42647058, b: 0.42647058, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
|
||||
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_Sprite: {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3}
|
||||
m_Type: 1
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
--- !u!114 &114549765989288124
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 1503640463151286}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1}
|
||||
m_RaycastTarget: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
|
||||
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_FontData:
|
||||
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_FontSize: 16
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 1
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 4
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 1
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: Copy
|
||||
--- !u!114 &114694493629914950
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 1785910143472904}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.83823526, g: 0.84439874, b: 0.84439874, a: 1}
|
||||
m_RaycastTarget: 0
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
|
||||
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||
m_FontData:
|
||||
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_FontSize: 15
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 1
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 3
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 1
|
||||
m_HorizontalOverflow: 1
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: Debug.Log summary
|
||||
--- !u!114 &114694923173451186
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 1396836967994216}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Navigation:
|
||||
m_Mode: 3
|
||||
m_SelectOnUp: {fileID: 0}
|
||||
m_SelectOnDown: {fileID: 0}
|
||||
m_SelectOnLeft: {fileID: 0}
|
||||
m_SelectOnRight: {fileID: 0}
|
||||
m_Transition: 1
|
||||
m_Colors:
|
||||
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||
m_ColorMultiplier: 1
|
||||
m_FadeDuration: 0.1
|
||||
m_SpriteState:
|
||||
m_HighlightedSprite: {fileID: 0}
|
||||
m_PressedSprite: {fileID: 0}
|
||||
m_DisabledSprite: {fileID: 0}
|
||||
m_AnimationTriggers:
|
||||
m_NormalTrigger: Normal
|
||||
m_HighlightedTrigger: Highlighted
|
||||
m_PressedTrigger: Pressed
|
||||
m_DisabledTrigger: Disabled
|
||||
m_Interactable: 1
|
||||
m_TargetGraphic: {fileID: 114119781176956926}
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls:
|
||||
- m_Target: {fileID: 11408050}
|
||||
m_MethodName: CopyLog
|
||||
m_Mode: 1
|
||||
m_Arguments:
|
||||
m_ObjectArgument: {fileID: 0}
|
||||
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||
m_IntArgument: 0
|
||||
m_FloatArgument: 0
|
||||
m_StringArgument:
|
||||
m_BoolArgument: 0
|
||||
m_CallState: 2
|
||||
m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,
|
||||
Culture=neutral, PublicKeyToken=null
|
||||
--- !u!222 &222175805939703770
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 1785910143472904}
|
||||
--- !u!222 &222313182602304162
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 1503640463151286}
|
||||
--- !u!222 &222870443111501910
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 1396836967994216}
|
||||
--- !u!224 &224006190298411330
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 1396836967994216}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children:
|
||||
- {fileID: 224887990600088790}
|
||||
m_Father: {fileID: 22479264}
|
||||
m_RootOrder: 3
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 2}
|
||||
m_SizeDelta: {x: -70, y: 36}
|
||||
m_Pivot: {x: 0.5, y: 0}
|
||||
--- !u!224 &224737693311518052
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 1785910143472904}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 22479264}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 15, y: 0}
|
||||
m_SizeDelta: {x: -40, y: -2}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!224 &224887990600088790
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 1503640463151286}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 224006190298411330}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!225 &225819852034701160
|
||||
CanvasGroup:
|
||||
m_ObjectHideFlags: 1
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 166880}
|
||||
m_Enabled: 1
|
||||
m_Alpha: 1
|
||||
m_Interactable: 1
|
||||
m_BlocksRaycasts: 1
|
||||
m_IgnoreParentGroups: 0
|
||||
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 391be5df5ef62f345bb76a1051c04da7
|
||||
timeCreated: 1465919887
|
||||
licenseType: Store
|
||||
NativeFormatImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,7 @@
|
||||
= In-game Debug Console (v1.6.8) =
|
||||
|
||||
Documentation: https://github.com/yasirkula/UnityIngameDebugConsole
|
||||
FAQ: https://github.com/yasirkula/UnityIngameDebugConsole#faq
|
||||
E-mail: yasirkula@gmail.com
|
||||
|
||||
You can simply place the IngameDebugConsole prefab to your scene. Hovering the cursor over its properties in the Inspector will reveal explanatory tooltips.
|
||||
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: edf2ac73f7bc3064c96d53009106dc53
|
||||
timeCreated: 1563307881
|
||||
licenseType: Store
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 860c08388401a6d4e858fe4910ea9337
|
||||
folderAsset: yes
|
||||
timeCreated: 1465930645
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,304 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
namespace IngameDebugConsole
|
||||
{
|
||||
public class CircularBuffer<T>
|
||||
{
|
||||
private readonly T[] array;
|
||||
private int startIndex;
|
||||
|
||||
public int Count { get; private set; }
|
||||
public T this[int index] { get { return array[( startIndex + index ) % array.Length]; } }
|
||||
|
||||
public CircularBuffer( int capacity )
|
||||
{
|
||||
array = new T[capacity];
|
||||
}
|
||||
|
||||
// Old elements are overwritten when capacity is reached
|
||||
public void Add( T value )
|
||||
{
|
||||
if( Count < array.Length )
|
||||
array[Count++] = value;
|
||||
else
|
||||
{
|
||||
array[startIndex] = value;
|
||||
if( ++startIndex >= array.Length )
|
||||
startIndex = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class DynamicCircularBuffer<T>
|
||||
{
|
||||
private T[] array;
|
||||
private int startIndex;
|
||||
|
||||
public int Count { get; private set; }
|
||||
public int Capacity { get { return array.Length; } }
|
||||
|
||||
public T this[int index]
|
||||
{
|
||||
get { return array[( startIndex + index ) % array.Length]; }
|
||||
set { array[( startIndex + index ) % array.Length] = value; }
|
||||
}
|
||||
|
||||
public DynamicCircularBuffer( int initialCapacity = 2 )
|
||||
{
|
||||
array = new T[initialCapacity];
|
||||
}
|
||||
|
||||
private void SetCapacity( int capacity )
|
||||
{
|
||||
T[] newArray = new T[capacity];
|
||||
if( Count > 0 )
|
||||
{
|
||||
int elementsBeforeWrap = Mathf.Min( Count, array.Length - startIndex );
|
||||
Array.Copy( array, startIndex, newArray, 0, elementsBeforeWrap );
|
||||
if( elementsBeforeWrap < Count )
|
||||
Array.Copy( array, 0, newArray, elementsBeforeWrap, Count - elementsBeforeWrap );
|
||||
}
|
||||
|
||||
array = newArray;
|
||||
startIndex = 0;
|
||||
}
|
||||
|
||||
/// <summary>Inserts the value to the beginning of the collection.</summary>
|
||||
public void AddFirst( T value )
|
||||
{
|
||||
if( array.Length == Count )
|
||||
SetCapacity( Mathf.Max( array.Length * 2, 4 ) );
|
||||
|
||||
startIndex = ( startIndex > 0 ) ? ( startIndex - 1 ) : ( array.Length - 1 );
|
||||
array[startIndex] = value;
|
||||
Count++;
|
||||
}
|
||||
|
||||
/// <summary>Adds the value to the end of the collection.</summary>
|
||||
public void Add( T value )
|
||||
{
|
||||
if( array.Length == Count )
|
||||
SetCapacity( Mathf.Max( array.Length * 2, 4 ) );
|
||||
|
||||
this[Count++] = value;
|
||||
}
|
||||
|
||||
public void AddRange( DynamicCircularBuffer<T> other )
|
||||
{
|
||||
if( other.Count == 0 )
|
||||
return;
|
||||
|
||||
if( array.Length < Count + other.Count )
|
||||
SetCapacity( Mathf.Max( array.Length * 2, Count + other.Count ) );
|
||||
|
||||
int insertStartIndex = ( startIndex + Count ) % array.Length;
|
||||
int elementsBeforeWrap = Mathf.Min( other.Count, array.Length - insertStartIndex );
|
||||
int otherElementsBeforeWrap = Mathf.Min( other.Count, other.array.Length - other.startIndex );
|
||||
|
||||
Array.Copy( other.array, other.startIndex, array, insertStartIndex, Mathf.Min( elementsBeforeWrap, otherElementsBeforeWrap ) );
|
||||
if( elementsBeforeWrap < otherElementsBeforeWrap ) // This array wrapped before the other array
|
||||
Array.Copy( other.array, other.startIndex + elementsBeforeWrap, array, 0, otherElementsBeforeWrap - elementsBeforeWrap );
|
||||
else if( elementsBeforeWrap > otherElementsBeforeWrap ) // The other array wrapped before this array
|
||||
Array.Copy( other.array, 0, array, insertStartIndex + otherElementsBeforeWrap, elementsBeforeWrap - otherElementsBeforeWrap );
|
||||
|
||||
int copiedElements = Mathf.Max( elementsBeforeWrap, otherElementsBeforeWrap );
|
||||
if( copiedElements < other.Count ) // Both arrays wrapped and there's still some elements left to copy
|
||||
Array.Copy( other.array, copiedElements - otherElementsBeforeWrap, array, copiedElements - elementsBeforeWrap, other.Count - copiedElements );
|
||||
|
||||
Count += other.Count;
|
||||
}
|
||||
|
||||
public T RemoveFirst()
|
||||
{
|
||||
T element = array[startIndex];
|
||||
array[startIndex] = default( T );
|
||||
|
||||
if( ++startIndex == array.Length )
|
||||
startIndex = 0;
|
||||
|
||||
Count--;
|
||||
return element;
|
||||
}
|
||||
|
||||
public T RemoveLast()
|
||||
{
|
||||
int index = ( startIndex + Count - 1 ) % array.Length;
|
||||
T element = array[index];
|
||||
array[index] = default( T );
|
||||
|
||||
Count--;
|
||||
return element;
|
||||
}
|
||||
|
||||
public int RemoveAll( Predicate<T> shouldRemoveElement )
|
||||
{
|
||||
return RemoveAll<T>( shouldRemoveElement, null, null );
|
||||
}
|
||||
|
||||
public int RemoveAll<Y>( Predicate<T> shouldRemoveElement, Action<T, int> onElementIndexChanged, DynamicCircularBuffer<Y> synchronizedBuffer )
|
||||
{
|
||||
Y[] synchronizedArray = ( synchronizedBuffer != null ) ? synchronizedBuffer.array : null;
|
||||
int elementsBeforeWrap = Mathf.Min( Count, array.Length - startIndex );
|
||||
int removedElements = 0;
|
||||
int i = startIndex, newIndex = startIndex, endIndex = startIndex + elementsBeforeWrap;
|
||||
for( ; i < endIndex; i++ )
|
||||
{
|
||||
if( shouldRemoveElement( array[i] ) )
|
||||
removedElements++;
|
||||
else
|
||||
{
|
||||
if( removedElements > 0 )
|
||||
{
|
||||
T element = array[i];
|
||||
array[newIndex] = element;
|
||||
|
||||
if( synchronizedArray != null )
|
||||
synchronizedArray[newIndex] = synchronizedArray[i];
|
||||
|
||||
if( onElementIndexChanged != null )
|
||||
onElementIndexChanged( element, newIndex - startIndex );
|
||||
}
|
||||
|
||||
newIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
i = 0;
|
||||
endIndex = Count - elementsBeforeWrap;
|
||||
|
||||
if( newIndex < array.Length )
|
||||
{
|
||||
for( ; i < endIndex; i++ )
|
||||
{
|
||||
if( shouldRemoveElement( array[i] ) )
|
||||
removedElements++;
|
||||
else
|
||||
{
|
||||
T element = array[i];
|
||||
array[newIndex] = element;
|
||||
|
||||
if( synchronizedArray != null )
|
||||
synchronizedArray[newIndex] = synchronizedArray[i];
|
||||
|
||||
if( onElementIndexChanged != null )
|
||||
onElementIndexChanged( element, newIndex - startIndex );
|
||||
|
||||
if( ++newIndex == array.Length )
|
||||
{
|
||||
i++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( newIndex == array.Length )
|
||||
{
|
||||
newIndex = 0;
|
||||
for( ; i < endIndex; i++ )
|
||||
{
|
||||
if( shouldRemoveElement( array[i] ) )
|
||||
removedElements++;
|
||||
else
|
||||
{
|
||||
if( removedElements > 0 )
|
||||
{
|
||||
T element = array[i];
|
||||
array[newIndex] = element;
|
||||
|
||||
if( synchronizedArray != null )
|
||||
synchronizedArray[newIndex] = synchronizedArray[i];
|
||||
|
||||
if( onElementIndexChanged != null )
|
||||
onElementIndexChanged( element, newIndex + elementsBeforeWrap );
|
||||
}
|
||||
|
||||
newIndex++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TrimEnd( removedElements );
|
||||
if( synchronizedBuffer != null )
|
||||
synchronizedBuffer.TrimEnd( removedElements );
|
||||
|
||||
return removedElements;
|
||||
}
|
||||
|
||||
public void TrimStart( int trimCount, Action<T> perElementCallback = null )
|
||||
{
|
||||
TrimInternal( trimCount, startIndex, perElementCallback );
|
||||
startIndex = ( startIndex + trimCount ) % array.Length;
|
||||
}
|
||||
|
||||
public void TrimEnd( int trimCount, Action<T> perElementCallback = null )
|
||||
{
|
||||
TrimInternal( trimCount, ( startIndex + Count - trimCount ) % array.Length, perElementCallback );
|
||||
}
|
||||
|
||||
private void TrimInternal( int trimCount, int startIndex, Action<T> perElementCallback )
|
||||
{
|
||||
int elementsBeforeWrap = Mathf.Min( trimCount, array.Length - startIndex );
|
||||
if( perElementCallback == null )
|
||||
{
|
||||
Array.Clear( array, startIndex, elementsBeforeWrap );
|
||||
if( elementsBeforeWrap < trimCount )
|
||||
Array.Clear( array, 0, trimCount - elementsBeforeWrap );
|
||||
}
|
||||
else
|
||||
{
|
||||
for( int i = startIndex, endIndex = startIndex + elementsBeforeWrap; i < endIndex; i++ )
|
||||
{
|
||||
perElementCallback( array[i] );
|
||||
array[i] = default( T );
|
||||
}
|
||||
|
||||
for( int i = 0, endIndex = trimCount - elementsBeforeWrap; i < endIndex; i++ )
|
||||
{
|
||||
perElementCallback( array[i] );
|
||||
array[i] = default( T );
|
||||
}
|
||||
}
|
||||
|
||||
Count -= trimCount;
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
int elementsBeforeWrap = Mathf.Min( Count, array.Length - startIndex );
|
||||
Array.Clear( array, startIndex, elementsBeforeWrap );
|
||||
if( elementsBeforeWrap < Count )
|
||||
Array.Clear( array, 0, Count - elementsBeforeWrap );
|
||||
|
||||
startIndex = 0;
|
||||
Count = 0;
|
||||
}
|
||||
|
||||
public int IndexOf( T value )
|
||||
{
|
||||
int elementsBeforeWrap = Mathf.Min( Count, array.Length - startIndex );
|
||||
int index = Array.IndexOf( array, value, startIndex, elementsBeforeWrap );
|
||||
if( index >= 0 )
|
||||
return index - startIndex;
|
||||
|
||||
if( elementsBeforeWrap < Count )
|
||||
{
|
||||
index = Array.IndexOf( array, value, 0, Count - elementsBeforeWrap );
|
||||
if( index >= 0 )
|
||||
return index + elementsBeforeWrap;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
public void ForEach( Action<T> action )
|
||||
{
|
||||
int elementsBeforeWrap = Mathf.Min( Count, array.Length - startIndex );
|
||||
for( int i = startIndex, endIndex = startIndex + elementsBeforeWrap; i < endIndex; i++ )
|
||||
action( array[i] );
|
||||
for( int i = 0, endIndex = Count - elementsBeforeWrap; i < endIndex; i++ )
|
||||
action( array[i] );
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6136cb3c00eac0149901b8e7f2fecef8
|
||||
timeCreated: 1550943949
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bb9b6e1ab379cec46bfae8f8abcc1f45
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,60 @@
|
||||
#if IDG_ENABLE_HELPER_COMMANDS
|
||||
using UnityEngine;
|
||||
|
||||
namespace IngameDebugConsole.Commands
|
||||
{
|
||||
public class PlayerPrefsCommands
|
||||
{
|
||||
[ConsoleMethod( "prefs.int", "Returns the value of an Integer PlayerPrefs field" ), UnityEngine.Scripting.Preserve]
|
||||
public static string PlayerPrefsGetInt( string key )
|
||||
{
|
||||
if( !PlayerPrefs.HasKey( key ) ) return "Key Not Found";
|
||||
return PlayerPrefs.GetInt( key ).ToString();
|
||||
}
|
||||
|
||||
[ConsoleMethod( "prefs.int", "Sets the value of an Integer PlayerPrefs field" ), UnityEngine.Scripting.Preserve]
|
||||
public static void PlayerPrefsSetInt( string key, int value )
|
||||
{
|
||||
PlayerPrefs.SetInt( key, value );
|
||||
}
|
||||
|
||||
[ConsoleMethod( "prefs.float", "Returns the value of a Float PlayerPrefs field" ), UnityEngine.Scripting.Preserve]
|
||||
public static string PlayerPrefsGetFloat( string key )
|
||||
{
|
||||
if( !PlayerPrefs.HasKey( key ) ) return "Key Not Found";
|
||||
return PlayerPrefs.GetFloat( key ).ToString();
|
||||
}
|
||||
|
||||
[ConsoleMethod( "prefs.float", "Sets the value of a Float PlayerPrefs field" ), UnityEngine.Scripting.Preserve]
|
||||
public static void PlayerPrefsSetFloat( string key, float value )
|
||||
{
|
||||
PlayerPrefs.SetFloat( key, value );
|
||||
}
|
||||
|
||||
[ConsoleMethod( "prefs.string", "Returns the value of a String PlayerPrefs field" ), UnityEngine.Scripting.Preserve]
|
||||
public static string PlayerPrefsGetString( string key )
|
||||
{
|
||||
if( !PlayerPrefs.HasKey( key ) ) return "Key Not Found";
|
||||
return PlayerPrefs.GetString( key );
|
||||
}
|
||||
|
||||
[ConsoleMethod( "prefs.string", "Sets the value of a String PlayerPrefs field" ), UnityEngine.Scripting.Preserve]
|
||||
public static void PlayerPrefsSetString( string key, string value )
|
||||
{
|
||||
PlayerPrefs.SetString( key, value );
|
||||
}
|
||||
|
||||
[ConsoleMethod( "prefs.delete", "Deletes a PlayerPrefs field" ), UnityEngine.Scripting.Preserve]
|
||||
public static void PlayerPrefsDelete( string key )
|
||||
{
|
||||
PlayerPrefs.DeleteKey( key );
|
||||
}
|
||||
|
||||
[ConsoleMethod( "prefs.clear", "Deletes all PlayerPrefs fields" ), UnityEngine.Scripting.Preserve]
|
||||
public static void PlayerPrefsClear()
|
||||
{
|
||||
PlayerPrefs.DeleteAll();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 33fb3ee25c8764f4c905fa3ac7c4eb89
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,60 @@
|
||||
#if IDG_ENABLE_HELPER_COMMANDS
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
namespace IngameDebugConsole.Commands
|
||||
{
|
||||
public class SceneCommands
|
||||
{
|
||||
[ConsoleMethod( "scene.load", "Loads a scene" ), UnityEngine.Scripting.Preserve]
|
||||
public static void LoadScene( string sceneName )
|
||||
{
|
||||
LoadSceneInternal( sceneName, false, LoadSceneMode.Single );
|
||||
}
|
||||
|
||||
[ConsoleMethod( "scene.load", "Loads a scene" ), UnityEngine.Scripting.Preserve]
|
||||
public static void LoadScene( string sceneName, LoadSceneMode mode )
|
||||
{
|
||||
LoadSceneInternal( sceneName, false, mode );
|
||||
}
|
||||
|
||||
[ConsoleMethod( "scene.loadasync", "Loads a scene asynchronously" ), UnityEngine.Scripting.Preserve]
|
||||
public static void LoadSceneAsync( string sceneName )
|
||||
{
|
||||
LoadSceneInternal( sceneName, true, LoadSceneMode.Single );
|
||||
}
|
||||
|
||||
[ConsoleMethod( "scene.loadasync", "Loads a scene asynchronously" ), UnityEngine.Scripting.Preserve]
|
||||
public static void LoadSceneAsync( string sceneName, LoadSceneMode mode )
|
||||
{
|
||||
LoadSceneInternal( sceneName, true, mode );
|
||||
}
|
||||
|
||||
private static void LoadSceneInternal( string sceneName, bool isAsync, LoadSceneMode mode )
|
||||
{
|
||||
if( SceneManager.GetSceneByName( sceneName ).IsValid() )
|
||||
{
|
||||
Debug.Log( "Scene " + sceneName + " is already loaded" );
|
||||
return;
|
||||
}
|
||||
|
||||
if( isAsync )
|
||||
SceneManager.LoadSceneAsync( sceneName, mode );
|
||||
else
|
||||
SceneManager.LoadScene( sceneName, mode );
|
||||
}
|
||||
|
||||
[ConsoleMethod( "scene.unload", "Unloads a scene" ), UnityEngine.Scripting.Preserve]
|
||||
public static void UnloadScene( string sceneName )
|
||||
{
|
||||
SceneManager.UnloadSceneAsync( sceneName );
|
||||
}
|
||||
|
||||
[ConsoleMethod( "scene.restart", "Restarts the active scene" ), UnityEngine.Scripting.Preserve]
|
||||
public static void RestartScene()
|
||||
{
|
||||
SceneManager.LoadScene( SceneManager.GetActiveScene().name, LoadSceneMode.Single );
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 45984eacd62d9a3489fd62689265a23c
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,21 @@
|
||||
#if IDG_ENABLE_HELPER_COMMANDS
|
||||
using UnityEngine;
|
||||
|
||||
namespace IngameDebugConsole.Commands
|
||||
{
|
||||
public class TimeCommands
|
||||
{
|
||||
[ConsoleMethod( "time.scale", "Sets the Time.timeScale value" ), UnityEngine.Scripting.Preserve]
|
||||
public static void SetTimeScale( float value )
|
||||
{
|
||||
Time.timeScale = Mathf.Max( value, 0f );
|
||||
}
|
||||
|
||||
[ConsoleMethod( "time.scale", "Returns the current Time.timeScale value" ), UnityEngine.Scripting.Preserve]
|
||||
public static float GetTimeScale()
|
||||
{
|
||||
return Time.timeScale;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bb12a1f557fffa541909fcfe92d9c1bf
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,23 @@
|
||||
using System;
|
||||
|
||||
namespace IngameDebugConsole
|
||||
{
|
||||
[AttributeUsage( AttributeTargets.Method, Inherited = false, AllowMultiple = true )]
|
||||
public class ConsoleMethodAttribute : Attribute
|
||||
{
|
||||
private string m_command;
|
||||
private string m_description;
|
||||
private string[] m_parameterNames;
|
||||
|
||||
public string Command { get { return m_command; } }
|
||||
public string Description { get { return m_description; } }
|
||||
public string[] ParameterNames { get { return m_parameterNames; } }
|
||||
|
||||
public ConsoleMethodAttribute( string command, string description, params string[] parameterNames )
|
||||
{
|
||||
m_command = command;
|
||||
m_description = description;
|
||||
m_parameterNames = parameterNames;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 324bb39c0bff0f74fa42f83e91f07e3a
|
||||
timeCreated: 1520710946
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d15693a03d0d33b4892c6365a2a97e19
|
||||
timeCreated: 1472036503
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,187 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
|
||||
// Container for a simple debug entry
|
||||
namespace IngameDebugConsole
|
||||
{
|
||||
public class DebugLogEntry
|
||||
{
|
||||
private const int HASH_NOT_CALCULATED = -623218;
|
||||
|
||||
public string logString;
|
||||
public string stackTrace;
|
||||
private string completeLog;
|
||||
|
||||
// Sprite to show with this entry
|
||||
public Sprite logTypeSpriteRepresentation;
|
||||
|
||||
// Collapsed count
|
||||
public int count;
|
||||
|
||||
// Index of this entry among all collapsed entries
|
||||
public int collapsedIndex;
|
||||
|
||||
private int hashValue;
|
||||
|
||||
public void Initialize( string logString, string stackTrace )
|
||||
{
|
||||
this.logString = logString;
|
||||
this.stackTrace = stackTrace;
|
||||
|
||||
completeLog = null;
|
||||
count = 1;
|
||||
hashValue = HASH_NOT_CALCULATED;
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
logString = null;
|
||||
stackTrace = null;
|
||||
completeLog = null;
|
||||
}
|
||||
|
||||
// Checks if logString or stackTrace contains the search term
|
||||
public bool MatchesSearchTerm( string searchTerm )
|
||||
{
|
||||
return ( logString != null && DebugLogConsole.caseInsensitiveComparer.IndexOf( logString, searchTerm, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) >= 0 ) ||
|
||||
( stackTrace != null && DebugLogConsole.caseInsensitiveComparer.IndexOf( stackTrace, searchTerm, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) >= 0 );
|
||||
}
|
||||
|
||||
// Return a string containing complete information about this debug entry
|
||||
public override string ToString()
|
||||
{
|
||||
if( completeLog == null )
|
||||
completeLog = string.Concat( logString, "\n", stackTrace );
|
||||
|
||||
return completeLog;
|
||||
}
|
||||
|
||||
// Credit: https://stackoverflow.com/a/19250516/2373034
|
||||
public int GetContentHashCode()
|
||||
{
|
||||
if( hashValue == HASH_NOT_CALCULATED )
|
||||
{
|
||||
unchecked
|
||||
{
|
||||
hashValue = 17;
|
||||
hashValue = hashValue * 23 + ( logString == null ? 0 : logString.GetHashCode() );
|
||||
hashValue = hashValue * 23 + ( stackTrace == null ? 0 : stackTrace.GetHashCode() );
|
||||
}
|
||||
}
|
||||
|
||||
return hashValue;
|
||||
}
|
||||
}
|
||||
|
||||
public struct QueuedDebugLogEntry
|
||||
{
|
||||
public readonly string logString;
|
||||
public readonly string stackTrace;
|
||||
public readonly LogType logType;
|
||||
|
||||
public QueuedDebugLogEntry( string logString, string stackTrace, LogType logType )
|
||||
{
|
||||
this.logString = logString;
|
||||
this.stackTrace = stackTrace;
|
||||
this.logType = logType;
|
||||
}
|
||||
|
||||
// Checks if logString or stackTrace contains the search term
|
||||
public bool MatchesSearchTerm( string searchTerm )
|
||||
{
|
||||
return ( logString != null && DebugLogConsole.caseInsensitiveComparer.IndexOf( logString, searchTerm, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) >= 0 ) ||
|
||||
( stackTrace != null && DebugLogConsole.caseInsensitiveComparer.IndexOf( stackTrace, searchTerm, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace ) >= 0 );
|
||||
}
|
||||
}
|
||||
|
||||
public struct DebugLogEntryTimestamp
|
||||
{
|
||||
public readonly System.DateTime dateTime;
|
||||
#if !IDG_OMIT_ELAPSED_TIME
|
||||
public readonly float elapsedSeconds;
|
||||
#endif
|
||||
#if !IDG_OMIT_FRAMECOUNT
|
||||
public readonly int frameCount;
|
||||
#endif
|
||||
|
||||
#if !IDG_OMIT_ELAPSED_TIME && !IDG_OMIT_FRAMECOUNT
|
||||
public DebugLogEntryTimestamp( System.DateTime dateTime, float elapsedSeconds, int frameCount )
|
||||
#elif !IDG_OMIT_ELAPSED_TIME
|
||||
public DebugLogEntryTimestamp( System.DateTime dateTime, float elapsedSeconds )
|
||||
#elif !IDG_OMIT_FRAMECOUNT
|
||||
public DebugLogEntryTimestamp( System.DateTime dateTime, int frameCount )
|
||||
#else
|
||||
public DebugLogEntryTimestamp( System.DateTime dateTime )
|
||||
#endif
|
||||
{
|
||||
this.dateTime = dateTime;
|
||||
#if !IDG_OMIT_ELAPSED_TIME
|
||||
this.elapsedSeconds = elapsedSeconds;
|
||||
#endif
|
||||
#if !IDG_OMIT_FRAMECOUNT
|
||||
this.frameCount = frameCount;
|
||||
#endif
|
||||
}
|
||||
|
||||
public void AppendTime( StringBuilder sb )
|
||||
{
|
||||
// Add DateTime in format: [HH:mm:ss]
|
||||
sb.Append( "[" );
|
||||
|
||||
int hour = dateTime.Hour;
|
||||
if( hour >= 10 )
|
||||
sb.Append( hour );
|
||||
else
|
||||
sb.Append( "0" ).Append( hour );
|
||||
|
||||
sb.Append( ":" );
|
||||
|
||||
int minute = dateTime.Minute;
|
||||
if( minute >= 10 )
|
||||
sb.Append( minute );
|
||||
else
|
||||
sb.Append( "0" ).Append( minute );
|
||||
|
||||
sb.Append( ":" );
|
||||
|
||||
int second = dateTime.Second;
|
||||
if( second >= 10 )
|
||||
sb.Append( second );
|
||||
else
|
||||
sb.Append( "0" ).Append( second );
|
||||
|
||||
sb.Append( "]" );
|
||||
}
|
||||
|
||||
public void AppendFullTimestamp( StringBuilder sb )
|
||||
{
|
||||
AppendTime( sb );
|
||||
|
||||
#if !IDG_OMIT_ELAPSED_TIME && !IDG_OMIT_FRAMECOUNT
|
||||
// Append elapsed seconds and frame count in format: [1.0s at #Frame]
|
||||
sb.Append( "[" ).Append( elapsedSeconds.ToString( "F1" ) ).Append( "s at " ).Append( "#" ).Append( frameCount ).Append( "]" );
|
||||
#elif !IDG_OMIT_ELAPSED_TIME
|
||||
// Append elapsed seconds in format: [1.0s]
|
||||
sb.Append( "[" ).Append( elapsedSeconds.ToString( "F1" ) ).Append( "s]" );
|
||||
#elif !IDG_OMIT_FRAMECOUNT
|
||||
// Append frame count in format: [#Frame]
|
||||
sb.Append( "[#" ).Append( frameCount ).Append( "]" );
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
public class DebugLogEntryContentEqualityComparer : EqualityComparer<DebugLogEntry>
|
||||
{
|
||||
public override bool Equals( DebugLogEntry x, DebugLogEntry y )
|
||||
{
|
||||
return x.logString == y.logString && x.stackTrace == y.stackTrace;
|
||||
}
|
||||
|
||||
public override int GetHashCode( DebugLogEntry obj )
|
||||
{
|
||||
return obj.GetContentHashCode();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e7b1a420c564be040bf73b8a377fc2c2
|
||||
timeCreated: 1466375168
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,282 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using UnityEngine.EventSystems;
|
||||
using System.Text;
|
||||
#if UNITY_EDITOR
|
||||
using UnityEditor;
|
||||
using System.Text.RegularExpressions;
|
||||
#endif
|
||||
|
||||
// A UI element to show information about a debug entry
|
||||
namespace IngameDebugConsole
|
||||
{
|
||||
public class DebugLogItem : MonoBehaviour, IPointerClickHandler
|
||||
{
|
||||
#region Platform Specific Elements
|
||||
#if !UNITY_2018_1_OR_NEWER
|
||||
#if !UNITY_EDITOR && UNITY_ANDROID
|
||||
private static AndroidJavaClass m_ajc = null;
|
||||
private static AndroidJavaClass AJC
|
||||
{
|
||||
get
|
||||
{
|
||||
if( m_ajc == null )
|
||||
m_ajc = new AndroidJavaClass( "com.yasirkula.unity.DebugConsole" );
|
||||
|
||||
return m_ajc;
|
||||
}
|
||||
}
|
||||
|
||||
private static AndroidJavaObject m_context = null;
|
||||
private static AndroidJavaObject Context
|
||||
{
|
||||
get
|
||||
{
|
||||
if( m_context == null )
|
||||
{
|
||||
using( AndroidJavaObject unityClass = new AndroidJavaClass( "com.unity3d.player.UnityPlayer" ) )
|
||||
{
|
||||
m_context = unityClass.GetStatic<AndroidJavaObject>( "currentActivity" );
|
||||
}
|
||||
}
|
||||
|
||||
return m_context;
|
||||
}
|
||||
}
|
||||
#elif !UNITY_EDITOR && UNITY_IOS
|
||||
[System.Runtime.InteropServices.DllImport( "__Internal" )]
|
||||
private static extern void _DebugConsole_CopyText( string text );
|
||||
#endif
|
||||
#endif
|
||||
#endregion
|
||||
|
||||
#pragma warning disable 0649
|
||||
// Cached components
|
||||
[SerializeField]
|
||||
private RectTransform transformComponent;
|
||||
public RectTransform Transform { get { return transformComponent; } }
|
||||
|
||||
[SerializeField]
|
||||
private Image imageComponent;
|
||||
public Image Image { get { return imageComponent; } }
|
||||
|
||||
[SerializeField]
|
||||
private CanvasGroup canvasGroupComponent;
|
||||
public CanvasGroup CanvasGroup { get { return canvasGroupComponent; } }
|
||||
|
||||
[SerializeField]
|
||||
private Text logText;
|
||||
[SerializeField]
|
||||
private Image logTypeImage;
|
||||
|
||||
// Objects related to the collapsed count of the debug entry
|
||||
[SerializeField]
|
||||
private GameObject logCountParent;
|
||||
[SerializeField]
|
||||
private Text logCountText;
|
||||
|
||||
[SerializeField]
|
||||
private RectTransform copyLogButton;
|
||||
#pragma warning restore 0649
|
||||
|
||||
// Debug entry to show with this log item
|
||||
private DebugLogEntry logEntry;
|
||||
public DebugLogEntry Entry { get { return logEntry; } }
|
||||
|
||||
private DebugLogEntryTimestamp? logEntryTimestamp;
|
||||
public DebugLogEntryTimestamp? Timestamp { get { return logEntryTimestamp; } }
|
||||
|
||||
// Index of the entry in the list of entries
|
||||
[System.NonSerialized] public int Index;
|
||||
|
||||
private bool isExpanded;
|
||||
public bool Expanded { get { return isExpanded; } }
|
||||
|
||||
private Vector2 logTextOriginalPosition;
|
||||
private Vector2 logTextOriginalSize;
|
||||
private float copyLogButtonHeight;
|
||||
|
||||
private DebugLogRecycledListView listView;
|
||||
|
||||
public void Initialize( DebugLogRecycledListView listView )
|
||||
{
|
||||
this.listView = listView;
|
||||
|
||||
logTextOriginalPosition = logText.rectTransform.anchoredPosition;
|
||||
logTextOriginalSize = logText.rectTransform.sizeDelta;
|
||||
copyLogButtonHeight = copyLogButton.anchoredPosition.y + copyLogButton.sizeDelta.y + 2f; // 2f: space between text and button
|
||||
|
||||
#if !UNITY_EDITOR && UNITY_WEBGL
|
||||
copyLogButton.gameObject.AddComponent<DebugLogItemCopyWebGL>().Initialize( this );
|
||||
#endif
|
||||
}
|
||||
|
||||
public void SetContent( DebugLogEntry logEntry, DebugLogEntryTimestamp? logEntryTimestamp, int entryIndex, bool isExpanded )
|
||||
{
|
||||
this.logEntry = logEntry;
|
||||
this.logEntryTimestamp = logEntryTimestamp;
|
||||
this.Index = entryIndex;
|
||||
this.isExpanded = isExpanded;
|
||||
|
||||
Vector2 size = transformComponent.sizeDelta;
|
||||
if( isExpanded )
|
||||
{
|
||||
logText.horizontalOverflow = HorizontalWrapMode.Wrap;
|
||||
size.y = listView.SelectedItemHeight;
|
||||
|
||||
if( !copyLogButton.gameObject.activeSelf )
|
||||
{
|
||||
copyLogButton.gameObject.SetActive( true );
|
||||
|
||||
logText.rectTransform.anchoredPosition = new Vector2( logTextOriginalPosition.x, logTextOriginalPosition.y + copyLogButtonHeight * 0.5f );
|
||||
logText.rectTransform.sizeDelta = logTextOriginalSize - new Vector2( 0f, copyLogButtonHeight );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
logText.horizontalOverflow = HorizontalWrapMode.Overflow;
|
||||
size.y = listView.ItemHeight;
|
||||
|
||||
if( copyLogButton.gameObject.activeSelf )
|
||||
{
|
||||
copyLogButton.gameObject.SetActive( false );
|
||||
|
||||
logText.rectTransform.anchoredPosition = logTextOriginalPosition;
|
||||
logText.rectTransform.sizeDelta = logTextOriginalSize;
|
||||
}
|
||||
}
|
||||
|
||||
transformComponent.sizeDelta = size;
|
||||
|
||||
SetText( logEntry, logEntryTimestamp, isExpanded );
|
||||
logTypeImage.sprite = logEntry.logTypeSpriteRepresentation;
|
||||
}
|
||||
|
||||
// Show the collapsed count of the debug entry
|
||||
public void ShowCount()
|
||||
{
|
||||
logCountText.text = logEntry.count.ToString();
|
||||
|
||||
if( !logCountParent.activeSelf )
|
||||
logCountParent.SetActive( true );
|
||||
}
|
||||
|
||||
// Hide the collapsed count of the debug entry
|
||||
public void HideCount()
|
||||
{
|
||||
if( logCountParent.activeSelf )
|
||||
logCountParent.SetActive( false );
|
||||
}
|
||||
|
||||
// Update the debug entry's displayed timestamp
|
||||
public void UpdateTimestamp( DebugLogEntryTimestamp timestamp )
|
||||
{
|
||||
logEntryTimestamp = timestamp;
|
||||
|
||||
if( isExpanded || listView.manager.alwaysDisplayTimestamps )
|
||||
SetText( logEntry, timestamp, isExpanded );
|
||||
}
|
||||
|
||||
private void SetText( DebugLogEntry logEntry, DebugLogEntryTimestamp? logEntryTimestamp, bool isExpanded )
|
||||
{
|
||||
if( !logEntryTimestamp.HasValue || ( !isExpanded && !listView.manager.alwaysDisplayTimestamps ) )
|
||||
logText.text = isExpanded ? logEntry.ToString() : logEntry.logString;
|
||||
else
|
||||
{
|
||||
StringBuilder sb = listView.manager.sharedStringBuilder;
|
||||
sb.Length = 0;
|
||||
|
||||
if( isExpanded )
|
||||
{
|
||||
logEntryTimestamp.Value.AppendFullTimestamp( sb );
|
||||
sb.Append( ": " ).Append( logEntry.ToString() );
|
||||
}
|
||||
else
|
||||
{
|
||||
logEntryTimestamp.Value.AppendTime( sb );
|
||||
sb.Append( " " ).Append( logEntry.logString );
|
||||
}
|
||||
|
||||
logText.text = sb.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
// This log item is clicked, show the debug entry's stack trace
|
||||
public void OnPointerClick( PointerEventData eventData )
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
if( eventData.button == PointerEventData.InputButton.Right )
|
||||
{
|
||||
Match regex = Regex.Match( logEntry.stackTrace, @"\(at .*\.cs:[0-9]+\)$", RegexOptions.Multiline );
|
||||
if( regex.Success )
|
||||
{
|
||||
string line = logEntry.stackTrace.Substring( regex.Index + 4, regex.Length - 5 );
|
||||
int lineSeparator = line.IndexOf( ':' );
|
||||
MonoScript script = AssetDatabase.LoadAssetAtPath<MonoScript>( line.Substring( 0, lineSeparator ) );
|
||||
if( script != null )
|
||||
AssetDatabase.OpenAsset( script, int.Parse( line.Substring( lineSeparator + 1 ) ) );
|
||||
}
|
||||
}
|
||||
else
|
||||
listView.OnLogItemClicked( this );
|
||||
#else
|
||||
listView.OnLogItemClicked( this );
|
||||
#endif
|
||||
}
|
||||
|
||||
public void CopyLog()
|
||||
{
|
||||
#if UNITY_EDITOR || !UNITY_WEBGL
|
||||
string log = GetCopyContent();
|
||||
if( string.IsNullOrEmpty( log ) )
|
||||
return;
|
||||
|
||||
#if UNITY_EDITOR || UNITY_2018_1_OR_NEWER || ( !UNITY_ANDROID && !UNITY_IOS )
|
||||
GUIUtility.systemCopyBuffer = log;
|
||||
#elif UNITY_ANDROID
|
||||
AJC.CallStatic( "CopyText", Context, log );
|
||||
#elif UNITY_IOS
|
||||
_DebugConsole_CopyText( log );
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
internal string GetCopyContent()
|
||||
{
|
||||
if( !logEntryTimestamp.HasValue )
|
||||
return logEntry.ToString();
|
||||
else
|
||||
{
|
||||
StringBuilder sb = listView.manager.sharedStringBuilder;
|
||||
sb.Length = 0;
|
||||
|
||||
logEntryTimestamp.Value.AppendFullTimestamp( sb );
|
||||
sb.Append( ": " ).Append( logEntry.ToString() );
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public float CalculateExpandedHeight( DebugLogEntry logEntry, DebugLogEntryTimestamp? logEntryTimestamp )
|
||||
{
|
||||
string text = logText.text;
|
||||
HorizontalWrapMode wrapMode = logText.horizontalOverflow;
|
||||
|
||||
SetText( logEntry, logEntryTimestamp, true );
|
||||
logText.horizontalOverflow = HorizontalWrapMode.Wrap;
|
||||
|
||||
float result = logText.preferredHeight + copyLogButtonHeight;
|
||||
|
||||
logText.text = text;
|
||||
logText.horizontalOverflow = wrapMode;
|
||||
|
||||
return Mathf.Max( listView.ItemHeight, result );
|
||||
}
|
||||
|
||||
// Return a string containing complete information about the debug entry
|
||||
public override string ToString()
|
||||
{
|
||||
return logEntry.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d2ea291be9de70a4abfec595203c96c1
|
||||
timeCreated: 1465919949
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,36 @@
|
||||
#if !UNITY_EDITOR && UNITY_WEBGL
|
||||
using System.Runtime.InteropServices;
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
|
||||
namespace IngameDebugConsole
|
||||
{
|
||||
public class DebugLogItemCopyWebGL : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
|
||||
{
|
||||
[DllImport( "__Internal" )]
|
||||
private static extern void IngameDebugConsoleStartCopy( string textToCopy );
|
||||
[DllImport( "__Internal" )]
|
||||
private static extern void IngameDebugConsoleCancelCopy();
|
||||
|
||||
private DebugLogItem logItem;
|
||||
|
||||
public void Initialize( DebugLogItem logItem )
|
||||
{
|
||||
this.logItem = logItem;
|
||||
}
|
||||
|
||||
public void OnPointerDown( PointerEventData eventData )
|
||||
{
|
||||
string log = logItem.GetCopyContent();
|
||||
if( !string.IsNullOrEmpty( log ) )
|
||||
IngameDebugConsoleStartCopy( log );
|
||||
}
|
||||
|
||||
public void OnPointerUp( PointerEventData eventData )
|
||||
{
|
||||
if( eventData.dragging )
|
||||
IngameDebugConsoleCancelCopy();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5a7d9d894141e704d8160fb4632121ac
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6a4f16ed905adcd4ab0d7c8c11f0d72c
|
||||
timeCreated: 1522092746
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: -9869
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,281 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using UnityEngine.EventSystems;
|
||||
using System.Collections;
|
||||
#if UNITY_EDITOR && UNITY_2021_1_OR_NEWER
|
||||
using Screen = UnityEngine.Device.Screen; // To support Device Simulator on Unity 2021.1+
|
||||
#endif
|
||||
|
||||
// Manager class for the debug popup
|
||||
namespace IngameDebugConsole
|
||||
{
|
||||
public class DebugLogPopup : MonoBehaviour, IPointerClickHandler, IBeginDragHandler, IDragHandler, IEndDragHandler
|
||||
{
|
||||
private RectTransform popupTransform;
|
||||
|
||||
// Dimensions of the popup divided by 2
|
||||
private Vector2 halfSize;
|
||||
|
||||
// Background image that will change color to indicate an alert
|
||||
private Image backgroundImage;
|
||||
|
||||
// Canvas group to modify visibility of the popup
|
||||
private CanvasGroup canvasGroup;
|
||||
|
||||
#pragma warning disable 0649
|
||||
[SerializeField]
|
||||
private DebugLogManager debugManager;
|
||||
|
||||
[SerializeField]
|
||||
private Text newInfoCountText;
|
||||
[SerializeField]
|
||||
private Text newWarningCountText;
|
||||
[SerializeField]
|
||||
private Text newErrorCountText;
|
||||
|
||||
[SerializeField]
|
||||
private Color alertColorInfo;
|
||||
[SerializeField]
|
||||
private Color alertColorWarning;
|
||||
[SerializeField]
|
||||
private Color alertColorError;
|
||||
#pragma warning restore 0649
|
||||
|
||||
// Number of new debug entries since the log window has been closed
|
||||
private int newInfoCount = 0, newWarningCount = 0, newErrorCount = 0;
|
||||
|
||||
private Color normalColor;
|
||||
|
||||
private bool isPopupBeingDragged = false;
|
||||
private Vector2 normalizedPosition;
|
||||
|
||||
// Coroutines for simple code-based animations
|
||||
private IEnumerator moveToPosCoroutine = null;
|
||||
|
||||
public bool IsVisible { get; private set; }
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
popupTransform = (RectTransform) transform;
|
||||
backgroundImage = GetComponent<Image>();
|
||||
canvasGroup = GetComponent<CanvasGroup>();
|
||||
|
||||
normalColor = backgroundImage.color;
|
||||
|
||||
halfSize = popupTransform.sizeDelta * 0.5f;
|
||||
|
||||
Vector2 pos = popupTransform.anchoredPosition;
|
||||
if( pos.x != 0f || pos.y != 0f )
|
||||
normalizedPosition = pos.normalized; // Respect the initial popup position set in the prefab
|
||||
else
|
||||
normalizedPosition = new Vector2( 0.5f, 0f ); // Right edge by default
|
||||
}
|
||||
|
||||
public void NewLogsArrived( int newInfo, int newWarning, int newError )
|
||||
{
|
||||
if( newInfo > 0 )
|
||||
{
|
||||
newInfoCount += newInfo;
|
||||
newInfoCountText.text = newInfoCount.ToString();
|
||||
}
|
||||
|
||||
if( newWarning > 0 )
|
||||
{
|
||||
newWarningCount += newWarning;
|
||||
newWarningCountText.text = newWarningCount.ToString();
|
||||
}
|
||||
|
||||
if( newError > 0 )
|
||||
{
|
||||
newErrorCount += newError;
|
||||
newErrorCountText.text = newErrorCount.ToString();
|
||||
}
|
||||
|
||||
if( newErrorCount > 0 )
|
||||
backgroundImage.color = alertColorError;
|
||||
else if( newWarningCount > 0 )
|
||||
backgroundImage.color = alertColorWarning;
|
||||
else
|
||||
backgroundImage.color = alertColorInfo;
|
||||
}
|
||||
|
||||
private void ResetValues()
|
||||
{
|
||||
newInfoCount = 0;
|
||||
newWarningCount = 0;
|
||||
newErrorCount = 0;
|
||||
|
||||
newInfoCountText.text = "0";
|
||||
newWarningCountText.text = "0";
|
||||
newErrorCountText.text = "0";
|
||||
|
||||
backgroundImage.color = normalColor;
|
||||
}
|
||||
|
||||
// A simple smooth movement animation
|
||||
private IEnumerator MoveToPosAnimation( Vector2 targetPos )
|
||||
{
|
||||
float modifier = 0f;
|
||||
Vector2 initialPos = popupTransform.anchoredPosition;
|
||||
|
||||
while( modifier < 1f )
|
||||
{
|
||||
modifier += 4f * Time.unscaledDeltaTime;
|
||||
popupTransform.anchoredPosition = Vector2.Lerp( initialPos, targetPos, modifier );
|
||||
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
|
||||
// Popup is clicked
|
||||
public void OnPointerClick( PointerEventData data )
|
||||
{
|
||||
// Hide the popup and show the log window
|
||||
if( !isPopupBeingDragged )
|
||||
debugManager.ShowLogWindow();
|
||||
}
|
||||
|
||||
// Hides the log window and shows the popup
|
||||
public void Show()
|
||||
{
|
||||
canvasGroup.blocksRaycasts = true;
|
||||
canvasGroup.alpha = debugManager.popupOpacity;
|
||||
IsVisible = true;
|
||||
|
||||
// Reset the counters
|
||||
ResetValues();
|
||||
|
||||
// Update position in case resolution was changed while the popup was hidden
|
||||
UpdatePosition( true );
|
||||
}
|
||||
|
||||
// Hide the popup
|
||||
public void Hide()
|
||||
{
|
||||
canvasGroup.blocksRaycasts = false;
|
||||
canvasGroup.alpha = 0f;
|
||||
|
||||
IsVisible = false;
|
||||
isPopupBeingDragged = false;
|
||||
}
|
||||
|
||||
public void OnBeginDrag( PointerEventData data )
|
||||
{
|
||||
isPopupBeingDragged = true;
|
||||
|
||||
// If a smooth movement animation is in progress, cancel it
|
||||
if( moveToPosCoroutine != null )
|
||||
{
|
||||
StopCoroutine( moveToPosCoroutine );
|
||||
moveToPosCoroutine = null;
|
||||
}
|
||||
}
|
||||
|
||||
// Reposition the popup
|
||||
public void OnDrag( PointerEventData data )
|
||||
{
|
||||
Vector2 localPoint;
|
||||
if( RectTransformUtility.ScreenPointToLocalPointInRectangle( debugManager.canvasTR, data.position, data.pressEventCamera, out localPoint ) )
|
||||
popupTransform.anchoredPosition = localPoint;
|
||||
}
|
||||
|
||||
// Smoothly translate the popup to the nearest edge
|
||||
public void OnEndDrag( PointerEventData data )
|
||||
{
|
||||
isPopupBeingDragged = false;
|
||||
UpdatePosition( false );
|
||||
}
|
||||
|
||||
// There are 2 different spaces used in these calculations:
|
||||
// RectTransform space: raw anchoredPosition of the popup that's in range [-canvasSize/2, canvasSize/2]
|
||||
// Safe area space: Screen.safeArea space that's in range [safeAreaBottomLeft, safeAreaTopRight] where these corner positions
|
||||
// are all positive (calculated from bottom left corner of the screen instead of the center of the screen)
|
||||
public void UpdatePosition( bool immediately )
|
||||
{
|
||||
Vector2 canvasRawSize = debugManager.canvasTR.rect.size;
|
||||
|
||||
// Calculate safe area bounds
|
||||
float canvasWidth = canvasRawSize.x;
|
||||
float canvasHeight = canvasRawSize.y;
|
||||
|
||||
float canvasBottomLeftX = 0f;
|
||||
float canvasBottomLeftY = 0f;
|
||||
|
||||
if( debugManager.popupAvoidsScreenCutout )
|
||||
{
|
||||
#if UNITY_2017_2_OR_NEWER && ( UNITY_EDITOR || UNITY_ANDROID || UNITY_IOS )
|
||||
Rect safeArea = Screen.safeArea;
|
||||
|
||||
int screenWidth = Screen.width;
|
||||
int screenHeight = Screen.height;
|
||||
|
||||
canvasWidth *= safeArea.width / screenWidth;
|
||||
canvasHeight *= safeArea.height / screenHeight;
|
||||
|
||||
canvasBottomLeftX = canvasRawSize.x * ( safeArea.x / screenWidth );
|
||||
canvasBottomLeftY = canvasRawSize.y * ( safeArea.y / screenHeight );
|
||||
#endif
|
||||
}
|
||||
|
||||
// Calculate safe area position of the popup
|
||||
// normalizedPosition allows us to glue the popup to a specific edge of the screen. It becomes useful when
|
||||
// the popup is at the right edge and we switch from portrait screen orientation to landscape screen orientation.
|
||||
// Without normalizedPosition, popup could jump to bottom or top edges instead of staying at the right edge
|
||||
Vector2 pos = canvasRawSize * 0.5f + ( immediately ? new Vector2( normalizedPosition.x * canvasWidth, normalizedPosition.y * canvasHeight ) : ( popupTransform.anchoredPosition - new Vector2( canvasBottomLeftX, canvasBottomLeftY ) ) );
|
||||
|
||||
// Find distances to all four edges of the safe area
|
||||
float distToLeft = pos.x;
|
||||
float distToRight = canvasWidth - distToLeft;
|
||||
|
||||
float distToBottom = pos.y;
|
||||
float distToTop = canvasHeight - distToBottom;
|
||||
|
||||
float horDistance = Mathf.Min( distToLeft, distToRight );
|
||||
float vertDistance = Mathf.Min( distToBottom, distToTop );
|
||||
|
||||
// Find the nearest edge's safe area coordinates
|
||||
if( horDistance < vertDistance )
|
||||
{
|
||||
if( distToLeft < distToRight )
|
||||
pos = new Vector2( halfSize.x, pos.y );
|
||||
else
|
||||
pos = new Vector2( canvasWidth - halfSize.x, pos.y );
|
||||
|
||||
pos.y = Mathf.Clamp( pos.y, halfSize.y, canvasHeight - halfSize.y );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( distToBottom < distToTop )
|
||||
pos = new Vector2( pos.x, halfSize.y );
|
||||
else
|
||||
pos = new Vector2( pos.x, canvasHeight - halfSize.y );
|
||||
|
||||
pos.x = Mathf.Clamp( pos.x, halfSize.x, canvasWidth - halfSize.x );
|
||||
}
|
||||
|
||||
pos -= canvasRawSize * 0.5f;
|
||||
|
||||
normalizedPosition.Set( pos.x / canvasWidth, pos.y / canvasHeight );
|
||||
|
||||
// Safe area's bottom left coordinates are added to pos only after normalizedPosition's value
|
||||
// is set because normalizedPosition is in range [-canvasWidth / 2, canvasWidth / 2]
|
||||
pos += new Vector2( canvasBottomLeftX, canvasBottomLeftY );
|
||||
|
||||
// If another smooth movement animation is in progress, cancel it
|
||||
if( moveToPosCoroutine != null )
|
||||
{
|
||||
StopCoroutine( moveToPosCoroutine );
|
||||
moveToPosCoroutine = null;
|
||||
}
|
||||
|
||||
if( immediately )
|
||||
popupTransform.anchoredPosition = pos;
|
||||
else
|
||||
{
|
||||
// Smoothly translate the popup to the specified position
|
||||
moveToPosCoroutine = MoveToPosAnimation( pos );
|
||||
StartCoroutine( moveToPosCoroutine );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 05cc4b1999716644c9308528e38e7081
|
||||
timeCreated: 1466533184
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,430 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
// Handles the log items in an optimized way such that existing log items are
|
||||
// recycled within the list instead of creating a new log item at each chance
|
||||
namespace IngameDebugConsole
|
||||
{
|
||||
public class DebugLogRecycledListView : MonoBehaviour
|
||||
{
|
||||
#pragma warning disable 0649
|
||||
// Cached components
|
||||
[SerializeField]
|
||||
private RectTransform transformComponent;
|
||||
[SerializeField]
|
||||
private RectTransform viewportTransform;
|
||||
|
||||
[SerializeField]
|
||||
private Color logItemNormalColor1;
|
||||
[SerializeField]
|
||||
private Color logItemNormalColor2;
|
||||
[SerializeField]
|
||||
private Color logItemSelectedColor;
|
||||
#pragma warning restore 0649
|
||||
|
||||
internal DebugLogManager manager;
|
||||
private ScrollRect scrollView;
|
||||
|
||||
private float logItemHeight;
|
||||
|
||||
private DynamicCircularBuffer<DebugLogEntry> entriesToShow = null;
|
||||
private DynamicCircularBuffer<DebugLogEntryTimestamp> timestampsOfEntriesToShow = null;
|
||||
|
||||
private DebugLogEntry selectedLogEntry;
|
||||
private int indexOfSelectedLogEntry = int.MaxValue;
|
||||
private float heightOfSelectedLogEntry;
|
||||
private float DeltaHeightOfSelectedLogEntry { get { return heightOfSelectedLogEntry - logItemHeight; } }
|
||||
|
||||
// Log items used to visualize the visible debug entries
|
||||
private readonly DynamicCircularBuffer<DebugLogItem> visibleLogItems = new DynamicCircularBuffer<DebugLogItem>( 32 );
|
||||
|
||||
private bool isCollapseOn = false;
|
||||
|
||||
// Current indices of debug entries shown on screen
|
||||
private int currentTopIndex = -1, currentBottomIndex = -1;
|
||||
|
||||
private System.Predicate<DebugLogItem> shouldRemoveLogItemPredicate;
|
||||
private System.Action<DebugLogItem> poolLogItemAction;
|
||||
|
||||
public float ItemHeight { get { return logItemHeight; } }
|
||||
public float SelectedItemHeight { get { return heightOfSelectedLogEntry; } }
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
scrollView = viewportTransform.GetComponentInParent<ScrollRect>();
|
||||
scrollView.onValueChanged.AddListener( ( pos ) =>
|
||||
{
|
||||
if( manager.IsLogWindowVisible )
|
||||
UpdateItemsInTheList( false );
|
||||
} );
|
||||
}
|
||||
|
||||
public void Initialize( DebugLogManager manager, DynamicCircularBuffer<DebugLogEntry> entriesToShow, DynamicCircularBuffer<DebugLogEntryTimestamp> timestampsOfEntriesToShow, float logItemHeight )
|
||||
{
|
||||
this.manager = manager;
|
||||
this.entriesToShow = entriesToShow;
|
||||
this.timestampsOfEntriesToShow = timestampsOfEntriesToShow;
|
||||
this.logItemHeight = logItemHeight;
|
||||
|
||||
shouldRemoveLogItemPredicate = ShouldRemoveLogItem;
|
||||
poolLogItemAction = manager.PoolLogItem;
|
||||
}
|
||||
|
||||
public void SetCollapseMode( bool collapse )
|
||||
{
|
||||
isCollapseOn = collapse;
|
||||
}
|
||||
|
||||
// A log item is clicked, highlight it
|
||||
public void OnLogItemClicked( DebugLogItem item )
|
||||
{
|
||||
OnLogItemClickedInternal( item.Index, item );
|
||||
}
|
||||
|
||||
// Force expand the log item at specified index
|
||||
public void SelectAndFocusOnLogItemAtIndex( int itemIndex )
|
||||
{
|
||||
if( indexOfSelectedLogEntry != itemIndex ) // Make sure that we aren't deselecting the target log item
|
||||
OnLogItemClickedInternal( itemIndex );
|
||||
|
||||
float viewportHeight = viewportTransform.rect.height;
|
||||
float transformComponentCenterYAtTop = viewportHeight * 0.5f;
|
||||
float transformComponentCenterYAtBottom = transformComponent.sizeDelta.y - viewportHeight * 0.5f;
|
||||
float transformComponentTargetCenterY = itemIndex * logItemHeight + viewportHeight * 0.5f;
|
||||
if( transformComponentCenterYAtTop == transformComponentCenterYAtBottom )
|
||||
scrollView.verticalNormalizedPosition = 0.5f;
|
||||
else
|
||||
scrollView.verticalNormalizedPosition = Mathf.Clamp01( Mathf.InverseLerp( transformComponentCenterYAtBottom, transformComponentCenterYAtTop, transformComponentTargetCenterY ) );
|
||||
|
||||
manager.SnapToBottom = false;
|
||||
}
|
||||
|
||||
private void OnLogItemClickedInternal( int itemIndex, DebugLogItem referenceItem = null )
|
||||
{
|
||||
int indexOfPreviouslySelectedLogEntry = indexOfSelectedLogEntry;
|
||||
DeselectSelectedLogItem();
|
||||
|
||||
if( indexOfPreviouslySelectedLogEntry != itemIndex )
|
||||
{
|
||||
selectedLogEntry = entriesToShow[itemIndex];
|
||||
indexOfSelectedLogEntry = itemIndex;
|
||||
CalculateSelectedLogEntryHeight( referenceItem );
|
||||
|
||||
manager.SnapToBottom = false;
|
||||
}
|
||||
|
||||
CalculateContentHeight();
|
||||
UpdateItemsInTheList( true );
|
||||
|
||||
manager.ValidateScrollPosition();
|
||||
}
|
||||
|
||||
// Deselect the currently selected log item
|
||||
public void DeselectSelectedLogItem()
|
||||
{
|
||||
selectedLogEntry = null;
|
||||
indexOfSelectedLogEntry = int.MaxValue;
|
||||
heightOfSelectedLogEntry = 0f;
|
||||
}
|
||||
|
||||
// Number of debug entries may have changed, update the list
|
||||
public void OnLogEntriesUpdated( bool updateAllVisibleItemContents )
|
||||
{
|
||||
CalculateContentHeight();
|
||||
UpdateItemsInTheList( updateAllVisibleItemContents );
|
||||
}
|
||||
|
||||
// A single collapsed log entry at specified index is updated, refresh its item if visible
|
||||
public void OnCollapsedLogEntryAtIndexUpdated( int index )
|
||||
{
|
||||
if( index >= currentTopIndex && index <= currentBottomIndex )
|
||||
{
|
||||
DebugLogItem logItem = GetLogItemAtIndex( index );
|
||||
logItem.ShowCount();
|
||||
|
||||
if( timestampsOfEntriesToShow != null )
|
||||
logItem.UpdateTimestamp( timestampsOfEntriesToShow[index] );
|
||||
}
|
||||
}
|
||||
|
||||
public void RefreshCollapsedLogEntryCounts()
|
||||
{
|
||||
for( int i = 0; i < visibleLogItems.Count; i++ )
|
||||
visibleLogItems[i].ShowCount();
|
||||
}
|
||||
|
||||
public void OnLogEntriesRemoved( int removedLogCount )
|
||||
{
|
||||
if( selectedLogEntry != null )
|
||||
{
|
||||
bool isSelectedLogEntryRemoved = isCollapseOn ? ( selectedLogEntry.count == 0 ) : ( indexOfSelectedLogEntry < removedLogCount );
|
||||
if( isSelectedLogEntryRemoved )
|
||||
DeselectSelectedLogItem();
|
||||
else
|
||||
indexOfSelectedLogEntry = isCollapseOn ? FindIndexOfLogEntryInReverseDirection( selectedLogEntry, indexOfSelectedLogEntry ) : ( indexOfSelectedLogEntry - removedLogCount );
|
||||
}
|
||||
|
||||
if( !manager.IsLogWindowVisible && manager.SnapToBottom )
|
||||
{
|
||||
// When log window becomes visible, it refreshes all logs. So unless snap to bottom is disabled, we don't need to
|
||||
// keep track of either the scroll position or the visible log items' positions.
|
||||
visibleLogItems.TrimStart( visibleLogItems.Count, poolLogItemAction );
|
||||
}
|
||||
else if( !isCollapseOn )
|
||||
visibleLogItems.TrimStart( Mathf.Clamp( removedLogCount - currentTopIndex, 0, visibleLogItems.Count ), poolLogItemAction );
|
||||
else
|
||||
{
|
||||
visibleLogItems.RemoveAll( shouldRemoveLogItemPredicate );
|
||||
if( visibleLogItems.Count > 0 )
|
||||
removedLogCount = currentTopIndex - FindIndexOfLogEntryInReverseDirection( visibleLogItems[0].Entry, visibleLogItems[0].Index );
|
||||
}
|
||||
|
||||
if( visibleLogItems.Count == 0 )
|
||||
{
|
||||
currentTopIndex = -1;
|
||||
|
||||
if( !manager.SnapToBottom )
|
||||
transformComponent.anchoredPosition = Vector2.zero;
|
||||
}
|
||||
else
|
||||
{
|
||||
currentTopIndex = Mathf.Max( 0, currentTopIndex - removedLogCount );
|
||||
currentBottomIndex = currentTopIndex + visibleLogItems.Count - 1;
|
||||
|
||||
float firstVisibleLogItemInitialYPos = visibleLogItems[0].Transform.anchoredPosition.y;
|
||||
for( int i = 0; i < visibleLogItems.Count; i++ )
|
||||
{
|
||||
DebugLogItem logItem = visibleLogItems[i];
|
||||
logItem.Index = currentTopIndex + i;
|
||||
|
||||
// If log window is visible, we need to manually refresh the visible items' visual properties. Otherwise, all log items will be refreshed when log window is opened
|
||||
if( manager.IsLogWindowVisible )
|
||||
{
|
||||
RepositionLogItem( logItem );
|
||||
ColorLogItem( logItem );
|
||||
|
||||
// Update collapsed count of the log items in collapsed mode
|
||||
if( isCollapseOn )
|
||||
logItem.ShowCount();
|
||||
}
|
||||
}
|
||||
|
||||
// Shift the ScrollRect
|
||||
if( !manager.SnapToBottom )
|
||||
transformComponent.anchoredPosition = new Vector2( 0f, Mathf.Max( 0f, transformComponent.anchoredPosition.y - ( visibleLogItems[0].Transform.anchoredPosition.y - firstVisibleLogItemInitialYPos ) ) );
|
||||
}
|
||||
}
|
||||
|
||||
private bool ShouldRemoveLogItem( DebugLogItem logItem )
|
||||
{
|
||||
if( logItem.Entry.count == 0 )
|
||||
{
|
||||
poolLogItemAction( logItem );
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private int FindIndexOfLogEntryInReverseDirection( DebugLogEntry logEntry, int startIndex )
|
||||
{
|
||||
for( int i = Mathf.Min( startIndex, entriesToShow.Count - 1 ); i >= 0; i-- )
|
||||
{
|
||||
if( entriesToShow[i] == logEntry )
|
||||
return i;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Log window's width has changed, update the expanded (currently selected) log's height
|
||||
public void OnViewportWidthChanged()
|
||||
{
|
||||
if( indexOfSelectedLogEntry >= entriesToShow.Count )
|
||||
return;
|
||||
|
||||
CalculateSelectedLogEntryHeight();
|
||||
CalculateContentHeight();
|
||||
UpdateItemsInTheList( true );
|
||||
|
||||
manager.ValidateScrollPosition();
|
||||
}
|
||||
|
||||
// Log window's height has changed, update the list
|
||||
public void OnViewportHeightChanged()
|
||||
{
|
||||
UpdateItemsInTheList( false );
|
||||
}
|
||||
|
||||
private void CalculateContentHeight()
|
||||
{
|
||||
float newHeight = Mathf.Max( 1f, entriesToShow.Count * logItemHeight );
|
||||
if( selectedLogEntry != null )
|
||||
newHeight += DeltaHeightOfSelectedLogEntry;
|
||||
|
||||
transformComponent.sizeDelta = new Vector2( 0f, newHeight );
|
||||
}
|
||||
|
||||
private void CalculateSelectedLogEntryHeight( DebugLogItem referenceItem = null )
|
||||
{
|
||||
if( !referenceItem )
|
||||
{
|
||||
if( visibleLogItems.Count == 0 )
|
||||
{
|
||||
UpdateItemsInTheList( false ); // Try to generate some DebugLogItems, we need one DebugLogItem to calculate the text height
|
||||
if( visibleLogItems.Count == 0 ) // No DebugLogItems are generated, weird
|
||||
return;
|
||||
}
|
||||
|
||||
referenceItem = visibleLogItems[0];
|
||||
}
|
||||
|
||||
heightOfSelectedLogEntry = referenceItem.CalculateExpandedHeight( selectedLogEntry, ( timestampsOfEntriesToShow != null ) ? timestampsOfEntriesToShow[indexOfSelectedLogEntry] : (DebugLogEntryTimestamp?) null );
|
||||
}
|
||||
|
||||
// Calculate the indices of log entries to show
|
||||
// and handle log items accordingly
|
||||
private void UpdateItemsInTheList( bool updateAllVisibleItemContents )
|
||||
{
|
||||
if( entriesToShow.Count > 0 )
|
||||
{
|
||||
float contentPosTop = transformComponent.anchoredPosition.y - 1f;
|
||||
float contentPosBottom = contentPosTop + viewportTransform.rect.height + 2f;
|
||||
float positionOfSelectedLogEntry = indexOfSelectedLogEntry * logItemHeight;
|
||||
|
||||
if( positionOfSelectedLogEntry <= contentPosBottom )
|
||||
{
|
||||
if( positionOfSelectedLogEntry <= contentPosTop )
|
||||
{
|
||||
contentPosTop = Mathf.Max( contentPosTop - DeltaHeightOfSelectedLogEntry, positionOfSelectedLogEntry - 1f );
|
||||
contentPosBottom = Mathf.Max( contentPosBottom - DeltaHeightOfSelectedLogEntry, contentPosTop + 2f );
|
||||
}
|
||||
else
|
||||
contentPosBottom = Mathf.Max( contentPosBottom - DeltaHeightOfSelectedLogEntry, positionOfSelectedLogEntry + 1f );
|
||||
}
|
||||
|
||||
int newBottomIndex = Mathf.Min( (int) ( contentPosBottom / logItemHeight ), entriesToShow.Count - 1 );
|
||||
int newTopIndex = Mathf.Clamp( (int) ( contentPosTop / logItemHeight ), 0, newBottomIndex );
|
||||
|
||||
if( currentTopIndex == -1 )
|
||||
{
|
||||
// There are no log items visible on screen,
|
||||
// just create the new log items
|
||||
updateAllVisibleItemContents = true;
|
||||
for( int i = 0, count = newBottomIndex - newTopIndex + 1; i < count; i++ )
|
||||
visibleLogItems.Add( manager.PopLogItem() );
|
||||
}
|
||||
else
|
||||
{
|
||||
// There are some log items visible on screen
|
||||
|
||||
if( newBottomIndex < currentTopIndex || newTopIndex > currentBottomIndex )
|
||||
{
|
||||
// If user scrolled a lot such that, none of the log items are now within
|
||||
// the bounds of the scroll view, pool all the previous log items and create
|
||||
// new log items for the new list of visible debug entries
|
||||
updateAllVisibleItemContents = true;
|
||||
|
||||
visibleLogItems.TrimStart( visibleLogItems.Count, poolLogItemAction );
|
||||
for( int i = 0, count = newBottomIndex - newTopIndex + 1; i < count; i++ )
|
||||
visibleLogItems.Add( manager.PopLogItem() );
|
||||
}
|
||||
else
|
||||
{
|
||||
// User did not scroll a lot such that, there are still some log items within
|
||||
// the bounds of the scroll view. Don't destroy them but update their content,
|
||||
// if necessary
|
||||
if( newTopIndex > currentTopIndex )
|
||||
visibleLogItems.TrimStart( newTopIndex - currentTopIndex, poolLogItemAction );
|
||||
|
||||
if( newBottomIndex < currentBottomIndex )
|
||||
visibleLogItems.TrimEnd( currentBottomIndex - newBottomIndex, poolLogItemAction );
|
||||
|
||||
if( newTopIndex < currentTopIndex )
|
||||
{
|
||||
for( int i = 0, count = currentTopIndex - newTopIndex; i < count; i++ )
|
||||
visibleLogItems.AddFirst( manager.PopLogItem() );
|
||||
|
||||
// If it is not necessary to update all the log items,
|
||||
// then just update the newly created log items. Otherwise,
|
||||
// wait for the major update
|
||||
if( !updateAllVisibleItemContents )
|
||||
UpdateLogItemContentsBetweenIndices( newTopIndex, currentTopIndex - 1, newTopIndex );
|
||||
}
|
||||
|
||||
if( newBottomIndex > currentBottomIndex )
|
||||
{
|
||||
for( int i = 0, count = newBottomIndex - currentBottomIndex; i < count; i++ )
|
||||
visibleLogItems.Add( manager.PopLogItem() );
|
||||
|
||||
// If it is not necessary to update all the log items,
|
||||
// then just update the newly created log items. Otherwise,
|
||||
// wait for the major update
|
||||
if( !updateAllVisibleItemContents )
|
||||
UpdateLogItemContentsBetweenIndices( currentBottomIndex + 1, newBottomIndex, newTopIndex );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
currentTopIndex = newTopIndex;
|
||||
currentBottomIndex = newBottomIndex;
|
||||
|
||||
if( updateAllVisibleItemContents )
|
||||
{
|
||||
// Update all the log items
|
||||
UpdateLogItemContentsBetweenIndices( currentTopIndex, currentBottomIndex, newTopIndex );
|
||||
}
|
||||
}
|
||||
else if( currentTopIndex != -1 )
|
||||
{
|
||||
// There is nothing to show but some log items are still visible; pool them
|
||||
visibleLogItems.TrimStart( visibleLogItems.Count, poolLogItemAction );
|
||||
currentTopIndex = -1;
|
||||
}
|
||||
}
|
||||
|
||||
private DebugLogItem GetLogItemAtIndex( int index )
|
||||
{
|
||||
return visibleLogItems[index - currentTopIndex];
|
||||
}
|
||||
|
||||
private void UpdateLogItemContentsBetweenIndices( int topIndex, int bottomIndex, int logItemOffset )
|
||||
{
|
||||
for( int i = topIndex; i <= bottomIndex; i++ )
|
||||
{
|
||||
DebugLogItem logItem = visibleLogItems[i - logItemOffset];
|
||||
logItem.SetContent( entriesToShow[i], ( timestampsOfEntriesToShow != null ) ? timestampsOfEntriesToShow[i] : (DebugLogEntryTimestamp?) null, i, i == indexOfSelectedLogEntry );
|
||||
|
||||
RepositionLogItem( logItem );
|
||||
ColorLogItem( logItem );
|
||||
|
||||
if( isCollapseOn )
|
||||
logItem.ShowCount();
|
||||
else
|
||||
logItem.HideCount();
|
||||
}
|
||||
}
|
||||
|
||||
private void RepositionLogItem( DebugLogItem logItem )
|
||||
{
|
||||
int index = logItem.Index;
|
||||
Vector2 anchoredPosition = new Vector2( 1f, -index * logItemHeight );
|
||||
if( index > indexOfSelectedLogEntry )
|
||||
anchoredPosition.y -= DeltaHeightOfSelectedLogEntry;
|
||||
|
||||
logItem.Transform.anchoredPosition = anchoredPosition;
|
||||
}
|
||||
|
||||
private void ColorLogItem( DebugLogItem logItem )
|
||||
{
|
||||
int index = logItem.Index;
|
||||
if( index == indexOfSelectedLogEntry )
|
||||
logItem.Image.color = logItemSelectedColor;
|
||||
else if( index % 2 == 0 )
|
||||
logItem.Image.color = logItemNormalColor1;
|
||||
else
|
||||
logItem.Image.color = logItemNormalColor2;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ce231987d32488f43b6fb798f7df43f6
|
||||
timeCreated: 1466373025
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,24 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
|
||||
// Listens to drag event on the DebugLogManager's resize button
|
||||
namespace IngameDebugConsole
|
||||
{
|
||||
public class DebugLogResizeListener : MonoBehaviour, IBeginDragHandler, IDragHandler
|
||||
{
|
||||
#pragma warning disable 0649
|
||||
[SerializeField]
|
||||
private DebugLogManager debugManager;
|
||||
#pragma warning restore 0649
|
||||
|
||||
// This interface must be implemented in order to receive drag events
|
||||
void IBeginDragHandler.OnBeginDrag( PointerEventData eventData )
|
||||
{
|
||||
}
|
||||
|
||||
void IDragHandler.OnDrag( PointerEventData eventData )
|
||||
{
|
||||
debugManager.Resize( eventData );
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6565f2084f5aef44abe57c988745b9c3
|
||||
timeCreated: 1601221093
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,47 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using UnityEngine.EventSystems;
|
||||
|
||||
// Listens to scroll events on the scroll rect that debug items are stored
|
||||
// and decides whether snap to bottom should be true or not
|
||||
//
|
||||
// Procedure: if, after a user input (drag or scroll), scrollbar is at the bottom, then
|
||||
// snap to bottom shall be true, otherwise it shall be false
|
||||
namespace IngameDebugConsole
|
||||
{
|
||||
public class DebugsOnScrollListener : MonoBehaviour, IScrollHandler, IBeginDragHandler, IEndDragHandler
|
||||
{
|
||||
public ScrollRect debugsScrollRect;
|
||||
public DebugLogManager debugLogManager;
|
||||
|
||||
public void OnScroll( PointerEventData data )
|
||||
{
|
||||
debugLogManager.SnapToBottom = IsScrollbarAtBottom();
|
||||
}
|
||||
|
||||
public void OnBeginDrag( PointerEventData data )
|
||||
{
|
||||
debugLogManager.SnapToBottom = false;
|
||||
}
|
||||
|
||||
public void OnEndDrag( PointerEventData data )
|
||||
{
|
||||
debugLogManager.SnapToBottom = IsScrollbarAtBottom();
|
||||
}
|
||||
|
||||
public void OnScrollbarDragStart( BaseEventData data )
|
||||
{
|
||||
debugLogManager.SnapToBottom = false;
|
||||
}
|
||||
|
||||
public void OnScrollbarDragEnd( BaseEventData data )
|
||||
{
|
||||
debugLogManager.SnapToBottom = IsScrollbarAtBottom();
|
||||
}
|
||||
|
||||
private bool IsScrollbarAtBottom()
|
||||
{
|
||||
return debugsScrollRect.verticalNormalizedPosition <= 1E-6f;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cb564dcb180e586429c57456166a76b5
|
||||
timeCreated: 1466004663
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,75 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
using UnityEngine.SceneManagement;
|
||||
#if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER
|
||||
using UnityEngine.InputSystem.UI;
|
||||
#endif
|
||||
|
||||
namespace IngameDebugConsole
|
||||
{
|
||||
// Avoid multiple EventSystems in the scene by activating the embedded EventSystem only if one doesn't already exist in the scene
|
||||
[DefaultExecutionOrder( 1000 )]
|
||||
public class EventSystemHandler : MonoBehaviour
|
||||
{
|
||||
#pragma warning disable 0649
|
||||
[SerializeField]
|
||||
private GameObject embeddedEventSystem;
|
||||
#pragma warning restore 0649
|
||||
|
||||
#if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER
|
||||
private void Awake()
|
||||
{
|
||||
StandaloneInputModule legacyInputModule = embeddedEventSystem.GetComponent<StandaloneInputModule>();
|
||||
if( legacyInputModule )
|
||||
{
|
||||
DestroyImmediate( legacyInputModule );
|
||||
embeddedEventSystem.AddComponent<InputSystemUIInputModule>();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
SceneManager.sceneLoaded -= OnSceneLoaded;
|
||||
SceneManager.sceneLoaded += OnSceneLoaded;
|
||||
SceneManager.sceneUnloaded -= OnSceneUnloaded;
|
||||
SceneManager.sceneUnloaded += OnSceneUnloaded;
|
||||
|
||||
ActivateEventSystemIfNeeded();
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
SceneManager.sceneLoaded -= OnSceneLoaded;
|
||||
SceneManager.sceneUnloaded -= OnSceneUnloaded;
|
||||
|
||||
DeactivateEventSystem();
|
||||
}
|
||||
|
||||
private void OnSceneLoaded( Scene scene, LoadSceneMode mode )
|
||||
{
|
||||
#if UNITY_2017_2_OR_NEWER
|
||||
DeactivateEventSystem();
|
||||
#endif
|
||||
ActivateEventSystemIfNeeded();
|
||||
}
|
||||
|
||||
private void OnSceneUnloaded( Scene current )
|
||||
{
|
||||
// Deactivate the embedded EventSystem before changing scenes because the new scene might have its own EventSystem
|
||||
DeactivateEventSystem();
|
||||
}
|
||||
|
||||
private void ActivateEventSystemIfNeeded()
|
||||
{
|
||||
if( embeddedEventSystem && !EventSystem.current )
|
||||
embeddedEventSystem.SetActive( true );
|
||||
}
|
||||
|
||||
private void DeactivateEventSystem()
|
||||
{
|
||||
if( embeddedEventSystem )
|
||||
embeddedEventSystem.SetActive( false );
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c3cc1b407f337e641ad32a2e91d5b478
|
||||
timeCreated: 1658741613
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,29 @@
|
||||
using System.Reflection;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace IngameDebugConsole
|
||||
{
|
||||
// Fixes: https://github.com/yasirkula/UnityIngameDebugConsole/issues/77
|
||||
// This was caused by Canvas.ForceUpdateCanvases in InputField.UpdateLabel (added in 2022.1 to resolve another bug: https://issuetracker.unity3d.com/issues/input-fields-width-doesnt-change-after-entering-specific-combinations-of-text-when-the-content-size-fitter-is-used)
|
||||
// which is triggered from InputField.OnValidate. UpdateLabel isn't invoked if a variable called m_PreventFontCallback is true,
|
||||
// which is what this component is doing: temporarily switching that variable before InputField.OnValidate to avoid this issue.
|
||||
#if UNITY_2022_1_OR_NEWER && UNITY_EDITOR
|
||||
[DefaultExecutionOrder( -50 )]
|
||||
#endif
|
||||
public class InputFieldWarningsFixer : MonoBehaviour
|
||||
{
|
||||
#if UNITY_2022_1_OR_NEWER && UNITY_EDITOR
|
||||
private static readonly FieldInfo preventFontCallback = typeof( InputField ).GetField( "m_PreventFontCallback", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance );
|
||||
|
||||
protected void OnValidate()
|
||||
{
|
||||
if( preventFontCallback != null && TryGetComponent( out InputField inputField ) )
|
||||
{
|
||||
preventFontCallback.SetValue( inputField, true );
|
||||
UnityEditor.EditorApplication.delayCall += () => preventFontCallback.SetValue( inputField, false );
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 049982f63fd78c042851caecd952f3f4
|
||||
timeCreated: 1701609854
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cb5d7b23a9e684a41a6a5d4f300eb1e6
|
||||
folderAsset: yes
|
||||
timeCreated: 1465925237
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@ -0,0 +1,128 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7a9e374666ad6cc47807bb001844f3d8
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 5
|
||||
maxTextureSize: 32
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 16
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 1
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 1
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 1
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 1
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag: DebugLogUI
|
||||
pSDRemoveMatte: 1
|
||||
pSDShowRemoveMatteOption: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@ -0,0 +1,92 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d1546f8db185caf4dafcfa58efa3ba2c
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 5
|
||||
maxTextureSize: 32
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 16
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag: DebugLogUI
|
||||
pSDRemoveMatte: 1
|
||||
pSDShowRemoveMatteOption: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@ -0,0 +1,92 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 66305a19e3614694f868c75a982e6b68
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 5
|
||||
maxTextureSize: 32
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 16
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag: DebugLogUI
|
||||
pSDRemoveMatte: 1
|
||||
pSDShowRemoveMatteOption: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@ -0,0 +1,92 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b3905a73a6672d9449647aaf036e23fc
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 5
|
||||
maxTextureSize: 32
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 16
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag: DebugLogUI
|
||||
pSDRemoveMatte: 1
|
||||
pSDShowRemoveMatteOption: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@ -0,0 +1,92 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5a97d5afa6254804f81b7ba956296996
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 5
|
||||
maxTextureSize: 32
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 16
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag: DebugLogUI
|
||||
pSDRemoveMatte: 1
|
||||
pSDShowRemoveMatteOption: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@ -0,0 +1,92 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7f0db3cf23c93fc4eac01cb3a52388ee
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 5
|
||||
maxTextureSize: 32
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 16
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 1
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag: DebugLogUI
|
||||
pSDRemoveMatte: 1
|
||||
pSDShowRemoveMatteOption: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@ -0,0 +1,92 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a9fd8f6b461461f4a92eafc60921ee78
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 5
|
||||
maxTextureSize: 32
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 16
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag: DebugLogUI
|
||||
pSDRemoveMatte: 1
|
||||
pSDShowRemoveMatteOption: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@ -0,0 +1,92 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 066c0b04be98cd348abb79add91d42bf
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 5
|
||||
maxTextureSize: 32
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 16
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag: DebugLogUI
|
||||
pSDRemoveMatte: 1
|
||||
pSDShowRemoveMatteOption: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@ -0,0 +1,92 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b902f763d0e47364dae25207b7e47800
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 5
|
||||
maxTextureSize: 32
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: -1
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 13, y: 13, z: 13, w: 13}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag: DebugLogUI
|
||||
pSDRemoveMatte: 1
|
||||
pSDShowRemoveMatteOption: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@ -0,0 +1,92 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 05c7216c78d4dd34ebe2bac9c1e274d7
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 5
|
||||
maxTextureSize: 32
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 16
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag: DebugLogUI
|
||||
pSDRemoveMatte: 1
|
||||
pSDShowRemoveMatteOption: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,113 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!687078895 &4343727234628468602
|
||||
SpriteAtlas:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: IngameDebugConsoleSpriteAtlas
|
||||
m_EditorData:
|
||||
serializedVersion: 2
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
anisoLevel: 1
|
||||
compressionQuality: 50
|
||||
maxTextureSize: 2048
|
||||
textureCompression: 0
|
||||
filterMode: 1
|
||||
generateMipMaps: 0
|
||||
readable: 0
|
||||
crunchedCompression: 0
|
||||
sRGB: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
m_BuildTarget: DefaultTexturePlatform
|
||||
m_MaxTextureSize: 2048
|
||||
m_ResizeAlgorithm: 0
|
||||
m_TextureFormat: -1
|
||||
m_TextureCompression: 0
|
||||
m_CompressionQuality: 50
|
||||
m_CrunchedCompression: 0
|
||||
m_AllowsAlphaSplitting: 0
|
||||
m_Overridden: 0
|
||||
m_IgnorePlatformSupport: 0
|
||||
m_AndroidETC2FallbackOverride: 0
|
||||
m_ForceMaximumCompressionQuality_BC6H_BC7: 1
|
||||
packingSettings:
|
||||
serializedVersion: 2
|
||||
padding: 8
|
||||
blockOffset: 1
|
||||
allowAlphaSplitting: 0
|
||||
enableRotation: 0
|
||||
enableTightPacking: 0
|
||||
enableAlphaDilation: 0
|
||||
secondaryTextureSettings: {}
|
||||
variantMultiplier: 1
|
||||
packables:
|
||||
- {fileID: 2800000, guid: 7a9e374666ad6cc47807bb001844f3d8, type: 3}
|
||||
- {fileID: 2800000, guid: d1546f8db185caf4dafcfa58efa3ba2c, type: 3}
|
||||
- {fileID: 2800000, guid: 66305a19e3614694f868c75a982e6b68, type: 3}
|
||||
- {fileID: 2800000, guid: b3905a73a6672d9449647aaf036e23fc, type: 3}
|
||||
- {fileID: 2800000, guid: 5a97d5afa6254804f81b7ba956296996, type: 3}
|
||||
- {fileID: 2800000, guid: 7f0db3cf23c93fc4eac01cb3a52388ee, type: 3}
|
||||
- {fileID: 2800000, guid: a9fd8f6b461461f4a92eafc60921ee78, type: 3}
|
||||
- {fileID: 2800000, guid: 066c0b04be98cd348abb79add91d42bf, type: 3}
|
||||
- {fileID: 2800000, guid: b902f763d0e47364dae25207b7e47800, type: 3}
|
||||
- {fileID: 2800000, guid: 05c7216c78d4dd34ebe2bac9c1e274d7, type: 3}
|
||||
- {fileID: 2800000, guid: e04e6c970b950d946a782ea08e5f971d, type: 3}
|
||||
- {fileID: 2800000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3}
|
||||
- {fileID: 2800000, guid: 98e8e1cf8dc7dbf469617c2e40c8a944, type: 3}
|
||||
- {fileID: 2800000, guid: b3f0d976f6d6802479d6465d11b3aa68, type: 3}
|
||||
bindAsDefault: 1
|
||||
isAtlasV2: 0
|
||||
cachedData: {fileID: 0}
|
||||
packedSpriteRenderDataKeys:
|
||||
- 066d3840badf4d24dba1d42b4c59b888: 21300000
|
||||
- b902f763d0e47364dae25207b7e47800: 21300000
|
||||
- b3905a73a6672d9449647aaf036e23fc: 21300000
|
||||
- 066c0b04be98cd348abb79add91d42bf: 21300000
|
||||
- 7a9e374666ad6cc47807bb001844f3d8: 21300000
|
||||
- b3f0d976f6d6802479d6465d11b3aa68: 21300000
|
||||
- e04e6c970b950d946a782ea08e5f971d: 21300000
|
||||
- 66305a19e3614694f868c75a982e6b68: 21300000
|
||||
- a9fd8f6b461461f4a92eafc60921ee78: 21300000
|
||||
- 05c7216c78d4dd34ebe2bac9c1e274d7: 21300000
|
||||
- d1546f8db185caf4dafcfa58efa3ba2c: 21300000
|
||||
- 5a97d5afa6254804f81b7ba956296996: 21300000
|
||||
- 98e8e1cf8dc7dbf469617c2e40c8a944: 21300000
|
||||
- 7f0db3cf23c93fc4eac01cb3a52388ee: 21300000
|
||||
m_MasterAtlas: {fileID: 0}
|
||||
m_PackedSprites:
|
||||
- {fileID: 21300000, guid: 066d3840badf4d24dba1d42b4c59b888, type: 3}
|
||||
- {fileID: 21300000, guid: b902f763d0e47364dae25207b7e47800, type: 3}
|
||||
- {fileID: 21300000, guid: b3905a73a6672d9449647aaf036e23fc, type: 3}
|
||||
- {fileID: 21300000, guid: 066c0b04be98cd348abb79add91d42bf, type: 3}
|
||||
- {fileID: 21300000, guid: 7a9e374666ad6cc47807bb001844f3d8, type: 3}
|
||||
- {fileID: 21300000, guid: b3f0d976f6d6802479d6465d11b3aa68, type: 3}
|
||||
- {fileID: 21300000, guid: e04e6c970b950d946a782ea08e5f971d, type: 3}
|
||||
- {fileID: 21300000, guid: 66305a19e3614694f868c75a982e6b68, type: 3}
|
||||
- {fileID: 21300000, guid: a9fd8f6b461461f4a92eafc60921ee78, type: 3}
|
||||
- {fileID: 21300000, guid: 05c7216c78d4dd34ebe2bac9c1e274d7, type: 3}
|
||||
- {fileID: 21300000, guid: d1546f8db185caf4dafcfa58efa3ba2c, type: 3}
|
||||
- {fileID: 21300000, guid: 5a97d5afa6254804f81b7ba956296996, type: 3}
|
||||
- {fileID: 21300000, guid: 98e8e1cf8dc7dbf469617c2e40c8a944, type: 3}
|
||||
- {fileID: 21300000, guid: 7f0db3cf23c93fc4eac01cb3a52388ee, type: 3}
|
||||
m_PackedSpriteNamesToIndex:
|
||||
- SlicedBackground
|
||||
- IconSnapToBottomBg
|
||||
- IconHide
|
||||
- IconSnapToBottom
|
||||
- IconClear
|
||||
- SlicedBackground3
|
||||
- SearchIcon
|
||||
- IconError
|
||||
- IconResizeVertialOnly
|
||||
- IconWarning
|
||||
- IconCollapse
|
||||
- IconInfo
|
||||
- SlicedBackground2
|
||||
- IconResizeAllDirections
|
||||
m_RenderDataMap: {}
|
||||
m_Tag: IngameDebugConsoleSpriteAtlas
|
||||
m_IsVariant: 0
|
||||
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d829dcfc225f56440a2b10d9ac318aea
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 4343727234628468602
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@ -0,0 +1,128 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e04e6c970b950d946a782ea08e5f971d
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: -1
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 1
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 1
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 1
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 1
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag: DebugLogUI
|
||||
pSDRemoveMatte: 1
|
||||
pSDShowRemoveMatteOption: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@ -0,0 +1,128 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 066d3840badf4d24dba1d42b4c59b888
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 5
|
||||
maxTextureSize: 32
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: -1
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 12, y: 12, z: 12, w: 12}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 1
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 1
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 1
|
||||
- serializedVersion: 3
|
||||
buildTarget: WebGL
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 1
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag: DebugLogUI
|
||||
pSDRemoveMatte: 1
|
||||
pSDShowRemoveMatteOption: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@ -0,0 +1,92 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 98e8e1cf8dc7dbf469617c2e40c8a944
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 5
|
||||
maxTextureSize: 32
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: -1
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 12, y: 12, z: 12, w: 12}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag: DebugLogUI
|
||||
pSDRemoveMatte: 1
|
||||
pSDShowRemoveMatteOption: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@ -0,0 +1,92 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b3f0d976f6d6802479d6465d11b3aa68
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 5
|
||||
maxTextureSize: 32
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: -1
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 13, y: 13, z: 13, w: 13}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag: DebugLogUI
|
||||
pSDRemoveMatte: 1
|
||||
pSDShowRemoveMatteOption: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f6caae32d463529478f2186f47c2e3fe
|
||||
folderAsset: yes
|
||||
timeCreated: 1466010601
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@ -0,0 +1,92 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a97ca0b99ece2d94aaaf59653feb45dd
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -3
|
||||
maxTextureSize: 64
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: 16
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 1
|
||||
pSDShowRemoveMatteOption: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@ -0,0 +1,92 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 33b115bf5efdfa04d8e2e0b70a6643cd
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -3
|
||||
maxTextureSize: 64
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: 16
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 1
|
||||
pSDShowRemoveMatteOption: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@ -0,0 +1,92 @@
|
||||
fileFormatVersion: 2
|
||||
guid: af17f91b4376d6a41a793c056c02dadc
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -3
|
||||
maxTextureSize: 64
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: 16
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
applyGammaDecoding: 1
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 64
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 1
|
||||
pSDShowRemoveMatteOption: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a091b43ce3618074d8cf2beb7e538a7d
|
||||
folderAsset: yes
|
||||
timeCreated: 1626377678
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,70 @@
|
||||
mergeInto( LibraryManager.library,
|
||||
{
|
||||
IngameDebugConsoleStartCopy: function( textToCopy )
|
||||
{
|
||||
var textToCopyJS = UTF8ToString( textToCopy );
|
||||
|
||||
// Delete if element exist
|
||||
var copyTextButton = document.getElementById( 'DebugConsoleCopyButtonGL' );
|
||||
if( !copyTextButton )
|
||||
{
|
||||
copyTextButton = document.createElement( 'button' );
|
||||
copyTextButton.setAttribute( 'id', 'DebugConsoleCopyButtonGL' );
|
||||
copyTextButton.setAttribute( 'style','display:none; visibility:hidden;' );
|
||||
}
|
||||
|
||||
copyTextButton.onclick = function( event )
|
||||
{
|
||||
// Credit: https://stackoverflow.com/a/30810322/2373034
|
||||
if( navigator.clipboard )
|
||||
{
|
||||
navigator.clipboard.writeText( textToCopyJS ).then( function() { }, function( err )
|
||||
{
|
||||
console.error( "Couldn't copy text to clipboard using clipboard.writeText: ", err );
|
||||
} );
|
||||
}
|
||||
else
|
||||
{
|
||||
var textArea = document.createElement( 'textarea' );
|
||||
textArea.value = textToCopyJS;
|
||||
|
||||
// Avoid scrolling to bottom
|
||||
textArea.style.top = "0";
|
||||
textArea.style.left = "0";
|
||||
textArea.style.position = "fixed";
|
||||
|
||||
document.body.appendChild( textArea );
|
||||
textArea.focus();
|
||||
textArea.select();
|
||||
|
||||
try
|
||||
{
|
||||
document.execCommand( 'copy' );
|
||||
}
|
||||
catch( err )
|
||||
{
|
||||
console.error( "Couldn't copy text to clipboard using document.execCommand", err );
|
||||
}
|
||||
|
||||
document.body.removeChild( textArea );
|
||||
}
|
||||
};
|
||||
|
||||
document.body.appendChild( copyTextButton );
|
||||
document.onmouseup = function()
|
||||
{
|
||||
document.onmouseup = null;
|
||||
copyTextButton.click();
|
||||
document.body.removeChild( copyTextButton );
|
||||
};
|
||||
},
|
||||
|
||||
IngameDebugConsoleCancelCopy: function()
|
||||
{
|
||||
var copyTextButton = document.getElementById( 'DebugConsoleCopyButtonGL' );
|
||||
if( copyTextButton )
|
||||
document.body.removeChild( copyTextButton );
|
||||
|
||||
document.onmouseup = null;
|
||||
}
|
||||
} );
|
||||
@ -0,0 +1,39 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aa23dd530e9f98c4cb0766404fc0e755
|
||||
timeCreated: 1626377683
|
||||
licenseType: Store
|
||||
PluginImporter:
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
platformData:
|
||||
data:
|
||||
first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
data:
|
||||
first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
data:
|
||||
first:
|
||||
Facebook: WebGL
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
data:
|
||||
first:
|
||||
WebGL: WebGL
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user