归档
This commit is contained in:
parent
a57b1457a4
commit
4430b23fdf
17
.gitignore
vendored
Normal file
17
.gitignore
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
/*.vsconfig
|
||||||
|
/Library/
|
||||||
|
/Temp/
|
||||||
|
/UserSettings/
|
||||||
|
/.vs/
|
||||||
|
/*.csproj
|
||||||
|
/*.sln
|
||||||
|
/*.sln
|
||||||
|
/obj/
|
||||||
|
/logs/
|
||||||
|
/Output/
|
||||||
|
|
||||||
|
**/switch_keys/*.keys
|
||||||
|
**/switch_keys/*.keys.meta
|
||||||
|
**/NintendoSDKPlugin/
|
||||||
|
**/NintendoSDKPlugin.meta
|
||||||
|
**/Application.aarch64.lp64.nmeta
|
||||||
8
Assets/AxiProjectTools.meta
Normal file
8
Assets/AxiProjectTools.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6462a051a34db5c4984ec4b62b8ca547
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/AxiProjectTools/AxiNSPack.meta
Normal file
8
Assets/AxiProjectTools/AxiNSPack.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 164952f99969ca942b4761b200d7e381
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/AxiProjectTools/AxiNSPack/Editors.meta
Normal file
8
Assets/AxiProjectTools/AxiNSPack/Editors.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cbe37300d75dbd641be2e6dca83a913c
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
346
Assets/AxiProjectTools/AxiNSPack/Editors/AxibugNSPTools.cs
Normal file
346
Assets/AxiProjectTools/AxiNSPack/Editors/AxibugNSPTools.cs
Normal file
@ -0,0 +1,346 @@
|
|||||||
|
#if UNITY_EDITOR_WIN
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEditor.Build.Reporting;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace AxibugEmuOnline.Editors
|
||||||
|
{
|
||||||
|
public class AxibugNSPTools : Editor
|
||||||
|
{
|
||||||
|
static string switch_keys = Path.GetFullPath(Path.Combine(Application.dataPath, "AxiProjectTools/AxiNSPack/switch_keys"));
|
||||||
|
static string hacpack_root = Path.GetFullPath(Path.Combine(Application.dataPath, "AxiProjectTools/AxiNSPack/hacpack"));
|
||||||
|
static Dictionary<string, string> tools = new Dictionary<string, string>();
|
||||||
|
static string prodKeysPath;
|
||||||
|
|
||||||
|
[MenuItem("Axibug移植工具/Switch/AxibugNSPTools/RepackNSP(仅重新构建NPS)")]
|
||||||
|
static void RepackNSP()
|
||||||
|
{
|
||||||
|
if (!CheckEnvironmentVariable())
|
||||||
|
return;
|
||||||
|
|
||||||
|
string path = EditorUtility.OpenFilePanel(
|
||||||
|
title: "选择 .nsp 文件",
|
||||||
|
directory: Path.Combine(Application.dataPath, ".."), // 默认路径为项目 Assets 目录
|
||||||
|
extension: "nsp" // 限制文件类型为 .nsp
|
||||||
|
);
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(path))
|
||||||
|
return;
|
||||||
|
|
||||||
|
RepackNSP(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
[MenuItem("Axibug移植工具/Switch/AxibugNSPTools/Build With RepackNSP(打包NSP并重新构建NPS)")]
|
||||||
|
public static void BuildWithRepackNSP()
|
||||||
|
{
|
||||||
|
if (!CheckEnvironmentVariable())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!EditorUtility.DisplayDialog("打包", $"确认打包NSP?", "继续", "取消"))
|
||||||
|
return;
|
||||||
|
|
||||||
|
var levels = new List<string>();
|
||||||
|
foreach (var scene in EditorBuildSettings.scenes)
|
||||||
|
{
|
||||||
|
if (scene.enabled)
|
||||||
|
levels.Add(scene.path);
|
||||||
|
}
|
||||||
|
|
||||||
|
var buildOpt = EditorUserBuildSettings.development ? BuildOptions.Development : BuildOptions.None;
|
||||||
|
if (EditorUserBuildSettings.buildWithDeepProfilingSupport)
|
||||||
|
buildOpt |= BuildOptions.EnableDeepProfilingSupport;
|
||||||
|
if (EditorUserBuildSettings.allowDebugging)
|
||||||
|
buildOpt |= BuildOptions.AllowDebugging;
|
||||||
|
|
||||||
|
//勾选构建NSP包
|
||||||
|
EditorUserBuildSettings.switchCreateRomFile = true;
|
||||||
|
|
||||||
|
#if UNITY_2018_1_OR_NEWER && !UNITY_6000_0_OR_NEWER
|
||||||
|
string titleid = PlayerSettings.Switch.applicationID;
|
||||||
|
#else
|
||||||
|
string titleid = "null";
|
||||||
|
#endif
|
||||||
|
string targetName = $"{Application.productName}_{titleid}.nsp";
|
||||||
|
|
||||||
|
string _locationPathName = $"Output/NSPBuild/{targetName}";
|
||||||
|
var options = new BuildPlayerOptions
|
||||||
|
{
|
||||||
|
scenes = levels.ToArray(),
|
||||||
|
locationPathName = _locationPathName,
|
||||||
|
target = BuildTarget.Switch,
|
||||||
|
options = buildOpt
|
||||||
|
};
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
BuildReport report = BuildPipeline.BuildPlayer(options);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Debug.LogError($"[AxibugNSPTools] Unity Build NSP 错误:{ex.ToString()}");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
string NSPFullPath = Path.GetFullPath(Path.Combine(Application.dataPath, "..", _locationPathName));
|
||||||
|
RepackNSP(NSPFullPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool CheckEnvironmentVariable()
|
||||||
|
{
|
||||||
|
// 获取环境变量(需要添加环境变量检查)
|
||||||
|
string sdkRoot = Environment.GetEnvironmentVariable("NINTENDO_SDK_ROOT");
|
||||||
|
if (string.IsNullOrEmpty(sdkRoot))
|
||||||
|
{
|
||||||
|
Debug.LogError($"[AxibugNSPTools]请先正确配置环境变量:NINTENDO_SDK_ROOT,(若已配置,则保证配置后彻底重启Unity Hub和Unity)");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region 获取prod.keys文件路径
|
||||||
|
prodKeysPath = Path.Combine(
|
||||||
|
switch_keys,
|
||||||
|
"prod.keys"
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!File.Exists(prodKeysPath))
|
||||||
|
{
|
||||||
|
Debug.LogError($"[AxibugNSPTools]未找到 prod.keys! 请先准备文件,path:{prodKeysPath}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void RepackNSP(string nspFile)
|
||||||
|
{
|
||||||
|
#region 初始化工具路径
|
||||||
|
// 获取环境变量(需要添加环境变量检查)
|
||||||
|
string sdkRoot = Environment.GetEnvironmentVariable("NINTENDO_SDK_ROOT");
|
||||||
|
tools["authoringTool"] = Path.Combine(sdkRoot, "Tools/CommandLineTools/AuthoringTool/AuthoringTool.exe");
|
||||||
|
tools["hacPack"] = Path.Combine(hacpack_root, "hacpack");
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 处理NSP文件路径
|
||||||
|
string nspFilePath = nspFile;
|
||||||
|
string nspFileName = Path.GetFileName(nspFilePath);
|
||||||
|
string nspParentDir = Path.GetDirectoryName(nspFilePath);
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 提取Title ID
|
||||||
|
string titleID = ExtractTitleID(nspFilePath);
|
||||||
|
if (string.IsNullOrEmpty(titleID))
|
||||||
|
{
|
||||||
|
Debug.LogError($"[AxibugNSPTools]NSP文件名一部分,必须包含TitleID");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Debug.Log($"[AxibugNSPTools]Using Title ID: {titleID}");
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
EditorUtility.DisplayProgressBar("AxibugNSPTools", $"清理临时目录", 0);
|
||||||
|
#region 清理临时目录
|
||||||
|
CleanDirectory(Path.Combine(nspParentDir, "repacker_extract"));
|
||||||
|
CleanDirectory(Path.Combine(Path.GetTempPath(), "NCA"));
|
||||||
|
CleanDirectory(Path.Combine(nspParentDir, "hacpack_backup"));
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
EditorUtility.DisplayProgressBar("AxibugNSPTools", $"解包NSP文件", 0.2f);
|
||||||
|
#region 解包NSP文件
|
||||||
|
string extractPath = Path.Combine(nspParentDir, "repacker_extract");
|
||||||
|
ExecuteCommand($"{tools["authoringTool"]} extract -o \"{extractPath}\" \"{nspFilePath}\"", nspParentDir);
|
||||||
|
|
||||||
|
string controlPath = null;
|
||||||
|
string programPath = null;
|
||||||
|
FindNACPAndNPDPaths(extractPath, ref controlPath, ref programPath);
|
||||||
|
if (controlPath == null || programPath == null)
|
||||||
|
{
|
||||||
|
Debug.LogError("[AxibugNSPTools] Critical directory structure not found!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 重建NCA/NSP
|
||||||
|
string tmpPath = Path.Combine(Path.GetTempPath(), "NCA");
|
||||||
|
EditorUtility.DisplayProgressBar("AxibugNSPTools", $"重建 Program NCA", 0.3f);
|
||||||
|
string programNCA = BuildProgramNCA(tmpPath, titleID, programPath, nspParentDir);
|
||||||
|
EditorUtility.DisplayProgressBar("AxibugNSPTools", $"重建 Control NCA", 0.4f);
|
||||||
|
string controlNCA = BuildControlNCA(tmpPath, titleID, controlPath, nspParentDir);
|
||||||
|
EditorUtility.DisplayProgressBar("AxibugNSPTools", $"重建 Meta NCA", 0.5f);
|
||||||
|
BuildMetaNCA(tmpPath, titleID, programNCA, controlNCA, nspParentDir);
|
||||||
|
EditorUtility.DisplayProgressBar("AxibugNSPTools", $"重建NSP", 0.6f);
|
||||||
|
string outputNSP = BuildFinalNSP(nspFilePath, nspParentDir, tmpPath, titleID, nspParentDir);
|
||||||
|
EditorUtility.DisplayProgressBar("AxibugNSPTools", $"重建NSP", 0.9f);
|
||||||
|
Debug.Log($"[AxibugNSPTools]Repacking completed: {outputNSP}");
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
EditorUtility.DisplayProgressBar("AxibugNSPTools", $"清理临时目录", 1);
|
||||||
|
#region 清理临时目录
|
||||||
|
CleanDirectory(Path.Combine(nspParentDir, "repacker_extract"));
|
||||||
|
CleanDirectory(Path.Combine(Path.GetTempPath(), "NCA"));
|
||||||
|
CleanDirectory(Path.Combine(nspParentDir, "hacpack_backup"));
|
||||||
|
#endregion
|
||||||
|
System.Diagnostics.Process.Start("explorer", "/select,\"" + outputNSP.Trim() + "\"");
|
||||||
|
EditorUtility.ClearProgressBar();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#region 辅助方法
|
||||||
|
static string GetUserInput()
|
||||||
|
{
|
||||||
|
Console.Write("Enter the NSP filepath: ");
|
||||||
|
return Console.ReadLine();
|
||||||
|
}
|
||||||
|
static string ExtractTitleID(string path)
|
||||||
|
{
|
||||||
|
var match = Regex.Match(path, @"0100[\dA-Fa-f]{12}");
|
||||||
|
return match.Success ? match.Value : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void CleanDirectory(string path)
|
||||||
|
{
|
||||||
|
if (Directory.Exists(path))
|
||||||
|
{
|
||||||
|
Directory.Delete(path, true);
|
||||||
|
while (Directory.Exists(path)) ; // 等待删除完成
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void FindNACPAndNPDPaths(string basePath, ref string controlPath, ref string programPath)
|
||||||
|
{
|
||||||
|
foreach (var dir in Directory.GetDirectories(basePath))
|
||||||
|
{
|
||||||
|
if (File.Exists(Path.Combine(dir, "fs0/control.nacp")))
|
||||||
|
controlPath = dir;
|
||||||
|
if (File.Exists(Path.Combine(dir, "fs0/main.npdm")))
|
||||||
|
programPath = dir;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static string ExecuteCommand(string command, string workdir)
|
||||||
|
{
|
||||||
|
Debug.Log($"调用cmd=>{command}");
|
||||||
|
var process = new System.Diagnostics.Process()
|
||||||
|
{
|
||||||
|
StartInfo = new System.Diagnostics.ProcessStartInfo
|
||||||
|
{
|
||||||
|
FileName = "cmd.exe",
|
||||||
|
Arguments = $"/C {command}",
|
||||||
|
RedirectStandardOutput = true,
|
||||||
|
RedirectStandardError = true, // 增加错误流重定向
|
||||||
|
UseShellExecute = false,
|
||||||
|
CreateNoWindow = true,
|
||||||
|
StandardOutputEncoding = Encoding.UTF8, // 明确指定编码
|
||||||
|
StandardErrorEncoding = Encoding.UTF8,
|
||||||
|
WorkingDirectory = workdir
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var outputBuilder = new StringBuilder();
|
||||||
|
var errorBuilder = new StringBuilder();
|
||||||
|
|
||||||
|
// 使用事件处理程序捕获实时输出
|
||||||
|
process.OutputDataReceived += (sender, args) =>
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(args.Data))
|
||||||
|
{
|
||||||
|
outputBuilder.AppendLine(args.Data);
|
||||||
|
Debug.Log($"[AxibugNSPTools]{args.Data}");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
process.ErrorDataReceived += (sender, args) =>
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(args.Data))
|
||||||
|
{
|
||||||
|
errorBuilder.AppendLine(args.Data);
|
||||||
|
if (args.Data.Contains("[WARN]"))
|
||||||
|
Debug.LogWarning($"[AxibugNSPTools]{args.Data}");
|
||||||
|
else
|
||||||
|
Debug.LogError($"[AxibugNSPTools]{args.Data}");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
process.Start();
|
||||||
|
|
||||||
|
// 开始异步读取输出
|
||||||
|
process.BeginOutputReadLine();
|
||||||
|
process.BeginErrorReadLine();
|
||||||
|
|
||||||
|
// 等待进程退出(此时流已关闭)
|
||||||
|
process.WaitForExit();
|
||||||
|
|
||||||
|
// 将错误信息附加到主输出
|
||||||
|
if (errorBuilder.Length > 0)
|
||||||
|
{
|
||||||
|
outputBuilder.AppendLine("\nError Output:");
|
||||||
|
outputBuilder.Append(errorBuilder);
|
||||||
|
}
|
||||||
|
|
||||||
|
return outputBuilder.ToString();
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region NCA构建逻辑
|
||||||
|
static string BuildProgramNCA(string tmpPath, string titleID, string programDir, string workdir)
|
||||||
|
{
|
||||||
|
string args = $"-k \"{prodKeysPath}\" -o \"{tmpPath}\" --titleid {titleID} " +
|
||||||
|
$"--type nca --ncatype program --exefsdir \"{programDir}/fs0\" " +
|
||||||
|
$"--romfsdir \"{programDir}/fs1\" --logodir \"{programDir}/fs2\"";
|
||||||
|
|
||||||
|
string output = ExecuteCommand($"{tools["hacPack"]} {args}", workdir);
|
||||||
|
return ParseNCAOutput(output, "Program");
|
||||||
|
}
|
||||||
|
|
||||||
|
static string BuildControlNCA(string tmpPath, string titleID, string controlDir, string workdir)
|
||||||
|
{
|
||||||
|
string args = $"-k \"{prodKeysPath}\" -o \"{tmpPath}\" --titleid {titleID} " +
|
||||||
|
$"--type nca --ncatype control --romfsdir \"{controlDir}/fs0\"";
|
||||||
|
|
||||||
|
string output = ExecuteCommand($"{tools["hacPack"]} {args}", workdir);
|
||||||
|
|
||||||
|
return ParseNCAOutput(output, "Control");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void BuildMetaNCA(string tmpPath, string titleID, string programNCA, string controlNCA, string workdir)
|
||||||
|
{
|
||||||
|
string args = $"-k \"{prodKeysPath}\" -o \"{tmpPath}\" --titleid {titleID} " +
|
||||||
|
$"--type nca --ncatype meta --titletype application " +
|
||||||
|
$"--programnca \"{programNCA}\" --controlnca \"{controlNCA}\"";
|
||||||
|
|
||||||
|
ExecuteCommand($"{tools["hacPack"]} {args}", workdir);
|
||||||
|
}
|
||||||
|
|
||||||
|
static string BuildFinalNSP(string origPath, string parentDir, string tmpPath, string titleID, string workdir)
|
||||||
|
{
|
||||||
|
string outputPath = origPath.Replace(".nsp", "_repacked.nsp");
|
||||||
|
if (File.Exists(outputPath)) File.Delete(outputPath);
|
||||||
|
|
||||||
|
string args = $"-k \"{prodKeysPath}\" -o \"{parentDir}\" --titleid {titleID} " +
|
||||||
|
$"--type nsp --ncadir \"{tmpPath}\"";
|
||||||
|
|
||||||
|
ExecuteCommand($"{tools["hacPack"]} {args}", workdir);
|
||||||
|
File.Move(Path.Combine(parentDir, $"{titleID}.nsp"), outputPath);
|
||||||
|
return outputPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
static string ParseNCAOutput(string output, string type)
|
||||||
|
{
|
||||||
|
var line = output.Split('\n')
|
||||||
|
.FirstOrDefault(l => l.Contains($"Created {type} NCA:"));
|
||||||
|
//return line?.Split(':').Last().Trim();
|
||||||
|
return line?.Substring(line.IndexOf("NCA:") + "NCA:".Length).Trim();
|
||||||
|
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 55aa3f0466c30bc4683cdbdc4dd75940
|
||||||
8
Assets/AxiProjectTools/AxiNSPack/hacpack.meta
Normal file
8
Assets/AxiProjectTools/AxiNSPack/hacpack.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d90c85ddb14ad7e4e9a6242ba135da0b
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/AxiProjectTools/AxiNSPack/hacpack/Tools.meta
Normal file
8
Assets/AxiProjectTools/AxiNSPack/hacpack/Tools.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b31e2ae7250c09548a777d4dcdfe2d1f
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7be57cd4293e9dc4297ea9b83fe08b18
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Binary file not shown.
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e1252f6d74d67ee48af0a0342aecc981
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -0,0 +1,152 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Application>
|
||||||
|
<Title>
|
||||||
|
<Language>AmericanEnglish</Language>
|
||||||
|
<Name>Homebrew Menu</Name>
|
||||||
|
<Publisher>Yellows8</Publisher>
|
||||||
|
</Title>
|
||||||
|
<Title>
|
||||||
|
<Language>BritishEnglish</Language>
|
||||||
|
<Name>Homebrew Menu</Name>
|
||||||
|
<Publisher>Yellows8</Publisher>
|
||||||
|
</Title>
|
||||||
|
<Title>
|
||||||
|
<Language>Japanese</Language>
|
||||||
|
<Name>Homebrew Menu</Name>
|
||||||
|
<Publisher>Yellows8</Publisher>
|
||||||
|
</Title>
|
||||||
|
<Title>
|
||||||
|
<Language>French</Language>
|
||||||
|
<Name>Homebrew Menu</Name>
|
||||||
|
<Publisher>Yellows8</Publisher>
|
||||||
|
</Title>
|
||||||
|
<Title>
|
||||||
|
<Language>German</Language>
|
||||||
|
<Name>Homebrew Menu</Name>
|
||||||
|
<Publisher>Yellows8</Publisher>
|
||||||
|
</Title>
|
||||||
|
<Title>
|
||||||
|
<Language>LatinAmericanSpanish</Language>
|
||||||
|
<Name>Homebrew Menu</Name>
|
||||||
|
<Publisher>Yellows8</Publisher>
|
||||||
|
</Title>
|
||||||
|
<Title>
|
||||||
|
<Language>Spanish</Language>
|
||||||
|
<Name>Homebrew Menu</Name>
|
||||||
|
<Publisher>Yellows8</Publisher>
|
||||||
|
</Title>
|
||||||
|
<Title>
|
||||||
|
<Language>Italian</Language>
|
||||||
|
<Name>Homebrew Menu</Name>
|
||||||
|
<Publisher>Yellows8</Publisher>
|
||||||
|
</Title>
|
||||||
|
<Title>
|
||||||
|
<Language>Dutch</Language>
|
||||||
|
<Name>Homebrew Menu</Name>
|
||||||
|
<Publisher>Yellows8</Publisher>
|
||||||
|
</Title>
|
||||||
|
<Title>
|
||||||
|
<Language>CanadianFrench</Language>
|
||||||
|
<Name>Homebrew Menu</Name>
|
||||||
|
<Publisher>Yellows8</Publisher>
|
||||||
|
</Title>
|
||||||
|
<Title>
|
||||||
|
<Language>Portuguese</Language>
|
||||||
|
<Name>Homebrew Menu</Name>
|
||||||
|
<Publisher>Yellows8</Publisher>
|
||||||
|
</Title>
|
||||||
|
<Title>
|
||||||
|
<Language>Russian</Language>
|
||||||
|
<Name>Homebrew Menu</Name>
|
||||||
|
<Publisher>Yellows8</Publisher>
|
||||||
|
</Title>
|
||||||
|
<Isbn/>
|
||||||
|
<StartupUserAccount>Required</StartupUserAccount>
|
||||||
|
<UserAccountSwitchLock>Disable</UserAccountSwitchLock>
|
||||||
|
<ParentalControl>None</ParentalControl>
|
||||||
|
<SupportedLanguage>AmericanEnglish</SupportedLanguage>
|
||||||
|
<SupportedLanguage>BritishEnglish</SupportedLanguage>
|
||||||
|
<SupportedLanguage>Japanese</SupportedLanguage>
|
||||||
|
<SupportedLanguage>French</SupportedLanguage>
|
||||||
|
<SupportedLanguage>German</SupportedLanguage>
|
||||||
|
<SupportedLanguage>LatinAmericanSpanish</SupportedLanguage>
|
||||||
|
<SupportedLanguage>Spanish</SupportedLanguage>
|
||||||
|
<SupportedLanguage>Italian</SupportedLanguage>
|
||||||
|
<SupportedLanguage>Dutch</SupportedLanguage>
|
||||||
|
<SupportedLanguage>CanadianFrench</SupportedLanguage>
|
||||||
|
<SupportedLanguage>Russian</SupportedLanguage>
|
||||||
|
<Screenshot>Allow</Screenshot>
|
||||||
|
<VideoCapture>Disable</VideoCapture>
|
||||||
|
<PresenceGroupId>0x0104444444441001</PresenceGroupId>
|
||||||
|
<DisplayVersion>2.0</DisplayVersion>
|
||||||
|
<Rating>
|
||||||
|
<Organization>CERO</Organization>
|
||||||
|
<Age>12</Age>
|
||||||
|
</Rating>
|
||||||
|
<Rating>
|
||||||
|
<Organization>ESRB</Organization>
|
||||||
|
<Age>10</Age>
|
||||||
|
</Rating>
|
||||||
|
<Rating>
|
||||||
|
<Organization>USK</Organization>
|
||||||
|
<Age>12</Age>
|
||||||
|
</Rating>
|
||||||
|
<Rating>
|
||||||
|
<Organization>PEGI</Organization>
|
||||||
|
<Age>12</Age>
|
||||||
|
</Rating>
|
||||||
|
<Rating>
|
||||||
|
<Organization>PEGIPortugal</Organization>
|
||||||
|
<Age>12</Age>
|
||||||
|
</Rating>
|
||||||
|
<Rating>
|
||||||
|
<Organization>PEGIBBFC</Organization>
|
||||||
|
<Age>12</Age>
|
||||||
|
</Rating>
|
||||||
|
<Rating>
|
||||||
|
<Organization>Russian</Organization>
|
||||||
|
<Age>12</Age>
|
||||||
|
</Rating>
|
||||||
|
<Rating>
|
||||||
|
<Organization>ACB</Organization>
|
||||||
|
<Age>13</Age>
|
||||||
|
</Rating>
|
||||||
|
<Rating>
|
||||||
|
<Organization>OFLC</Organization>
|
||||||
|
<Age>13</Age>
|
||||||
|
</Rating>
|
||||||
|
<DataLossConfirmation>Required</DataLossConfirmation>
|
||||||
|
<PlayLogPolicy>All</PlayLogPolicy>
|
||||||
|
<SaveDataOwnerId>0x0104444444441001</SaveDataOwnerId>
|
||||||
|
<UserAccountSaveDataSize>0x0000000003e00000</UserAccountSaveDataSize>
|
||||||
|
<UserAccountSaveDataJournalSize>0x0000000000180000</UserAccountSaveDataJournalSize>
|
||||||
|
<DeviceSaveDataSize>0x0000000000000000</DeviceSaveDataSize>
|
||||||
|
<DeviceSaveDataJournalSize>0x0000000000000000</DeviceSaveDataJournalSize>
|
||||||
|
<BcatDeliveryCacheStorageSize>0x0000000000000000</BcatDeliveryCacheStorageSize>
|
||||||
|
<ApplicationErrorCodeCategory/>
|
||||||
|
<AddOnContentBaseId>0x0104444444442001</AddOnContentBaseId>
|
||||||
|
<LogoType>Nintendo</LogoType>
|
||||||
|
<LocalCommunicationId>0x0104444444441001</LocalCommunicationId>
|
||||||
|
<LogoHandling>Auto</LogoHandling>
|
||||||
|
<SeedForPseudoDeviceId>0x0000000000000000</SeedForPseudoDeviceId>
|
||||||
|
<BcatPassphrase/>
|
||||||
|
<AddOnContentRegistrationType>AllOnLaunch</AddOnContentRegistrationType>
|
||||||
|
<UserAccountSaveDataSizeMax>0x0000000000000000</UserAccountSaveDataSizeMax>
|
||||||
|
<UserAccountSaveDataJournalSizeMax>0x0000000000000000</UserAccountSaveDataJournalSizeMax>
|
||||||
|
<DeviceSaveDataSizeMax>0x0000000000000000</DeviceSaveDataSizeMax>
|
||||||
|
<DeviceSaveDataJournalSizeMax>0x0000000000000000</DeviceSaveDataJournalSizeMax>
|
||||||
|
<TemporaryStorageSize>0x0000000000000000</TemporaryStorageSize>
|
||||||
|
<CacheStorageSize>0x0000000000000000</CacheStorageSize>
|
||||||
|
<CacheStorageJournalSize>0x0000000000000000</CacheStorageJournalSize>
|
||||||
|
<CacheStorageDataAndJournalSizeMax>0x0000000000000000</CacheStorageDataAndJournalSizeMax>
|
||||||
|
<CacheStorageIndexMax>0x0000000000000000</CacheStorageIndexMax>
|
||||||
|
<Hdcp>None</Hdcp>
|
||||||
|
<CrashReport>Deny</CrashReport>
|
||||||
|
<RuntimeAddOnContentInstall>Deny</RuntimeAddOnContentInstall>
|
||||||
|
<PlayLogQueryableApplicationId>0x0000000000000000</PlayLogQueryableApplicationId>
|
||||||
|
<PlayLogQueryCapability>None</PlayLogQueryCapability>
|
||||||
|
<Repair>None</Repair>
|
||||||
|
<Attribute>None</Attribute>
|
||||||
|
<ProgramIndex>0</ProgramIndex>
|
||||||
|
<RequiredNetworkServiceLicenseOnLaunch>None</RequiredNetworkServiceLicenseOnLaunch>
|
||||||
|
</Application>
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 42c1295c31de3a948825b9e8e9e8184f
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/AxiProjectTools/AxiNSPack/hacpack/hacpack.exe
Normal file
BIN
Assets/AxiProjectTools/AxiNSPack/hacpack/hacpack.exe
Normal file
Binary file not shown.
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7b1b3ff7954facb409d3ba6f9840f762
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/AxiProjectTools/AxiNSPack/switch_keys.meta
Normal file
8
Assets/AxiProjectTools/AxiNSPack/switch_keys.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 409c6e8e5ead0ac4991ea6c243e407dd
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 08bd0c8a53daacb4ea23b14dde156354
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/Resources.meta
Normal file
8
Assets/Resources.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 34d2fb455a172384c8281f029b369191
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
5691
Assets/Resources/MainPanel.prefab
Normal file
5691
Assets/Resources/MainPanel.prefab
Normal file
File diff suppressed because it is too large
Load Diff
8
Assets/Resources/MainPanel.prefab.meta
Normal file
8
Assets/Resources/MainPanel.prefab.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6d30862c18dfc6d4298eaa634e09bddb
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 100100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/Resources/Shader.meta
Normal file
8
Assets/Resources/Shader.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: eddba3d584a99e5498b2c37d47a85b48
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
133
Assets/Resources/Shader/VirtuaNesDraw.shader
Normal file
133
Assets/Resources/Shader/VirtuaNesDraw.shader
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
Shader "AleinUI/Clip"
|
||||||
|
{
|
||||||
|
Properties
|
||||||
|
{
|
||||||
|
_MainTex ("Sprite Texture", 2D) = "white" {}
|
||||||
|
_PalTex ("PAL", 2D) = "white" {}
|
||||||
|
_Color ("Tint", Color) = (1,1,1,1)
|
||||||
|
|
||||||
|
_StencilComp ("Stencil Comparison", Float) = 8
|
||||||
|
_Stencil ("Stencil ID", Float) = 0
|
||||||
|
_StencilOp ("Stencil Operation", Float) = 0
|
||||||
|
_StencilWriteMask ("Stencil Write Mask", Float) = 255
|
||||||
|
_StencilReadMask ("Stencil Read Mask", Float) = 255
|
||||||
|
|
||||||
|
_ColorMask ("Color Mask", Float) = 15
|
||||||
|
|
||||||
|
|
||||||
|
[Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
SubShader
|
||||||
|
{
|
||||||
|
Tags
|
||||||
|
{
|
||||||
|
"Queue"="Transparent"
|
||||||
|
"IgnoreProjector"="True"
|
||||||
|
"RenderType"="Transparent"
|
||||||
|
"PreviewType"="Plane"
|
||||||
|
"CanUseSpriteAtlas"="True"
|
||||||
|
}
|
||||||
|
|
||||||
|
Stencil
|
||||||
|
{
|
||||||
|
Ref [_Stencil]
|
||||||
|
Comp [_StencilComp]
|
||||||
|
Pass [_StencilOp]
|
||||||
|
ReadMask [_StencilReadMask]
|
||||||
|
WriteMask [_StencilWriteMask]
|
||||||
|
}
|
||||||
|
|
||||||
|
Cull Off
|
||||||
|
Lighting Off
|
||||||
|
ZWrite Off
|
||||||
|
ZTest [unity_GUIZTestMode]
|
||||||
|
Blend SrcAlpha OneMinusSrcAlpha
|
||||||
|
ColorMask [_ColorMask]
|
||||||
|
|
||||||
|
Pass
|
||||||
|
{
|
||||||
|
Name "Default"
|
||||||
|
CGPROGRAM
|
||||||
|
#pragma vertex vert
|
||||||
|
#pragma fragment frag
|
||||||
|
#pragma target 2.0
|
||||||
|
|
||||||
|
#include "UnityCG.cginc"
|
||||||
|
#include "UnityUI.cginc"
|
||||||
|
|
||||||
|
#pragma multi_compile_local _ UNITY_UI_CLIP_RECT
|
||||||
|
#pragma multi_compile_local _ UNITY_UI_ALPHACLIP
|
||||||
|
|
||||||
|
struct appdata_t
|
||||||
|
{
|
||||||
|
float4 vertex : POSITION;
|
||||||
|
float4 color : COLOR;
|
||||||
|
float2 texcoord : TEXCOORD0;
|
||||||
|
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||||
|
};
|
||||||
|
|
||||||
|
struct v2f
|
||||||
|
{
|
||||||
|
float4 vertex : SV_POSITION;
|
||||||
|
fixed4 color : COLOR;
|
||||||
|
float2 texcoord : TEXCOORD0;
|
||||||
|
float4 worldPosition : TEXCOORD1;
|
||||||
|
UNITY_VERTEX_OUTPUT_STEREO
|
||||||
|
};
|
||||||
|
|
||||||
|
sampler2D _MainTex;
|
||||||
|
fixed4 _Color;
|
||||||
|
fixed4 _TextureSampleAdd;
|
||||||
|
float4 _ClipRect;
|
||||||
|
float4 _MainTex_ST;
|
||||||
|
float4 _MainTex_TexelSize;
|
||||||
|
sampler2D _PalTex;
|
||||||
|
|
||||||
|
v2f vert(appdata_t v)
|
||||||
|
{
|
||||||
|
v2f OUT;
|
||||||
|
UNITY_SETUP_INSTANCE_ID(v);
|
||||||
|
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT);
|
||||||
|
OUT.worldPosition = v.vertex;
|
||||||
|
OUT.vertex = UnityObjectToClipPos(OUT.worldPosition);
|
||||||
|
|
||||||
|
OUT.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
|
||||||
|
|
||||||
|
OUT.color = v.color * _Color;
|
||||||
|
return OUT;
|
||||||
|
}
|
||||||
|
|
||||||
|
fixed4 frag(v2f IN) : SV_Target
|
||||||
|
{
|
||||||
|
float2 mapUV = IN.texcoord;
|
||||||
|
|
||||||
|
float start= 8.0/272.0;
|
||||||
|
float end = (272.0-8.0)/272.0;
|
||||||
|
|
||||||
|
mapUV.x = lerp(start,end, mapUV.x);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
half4 color = tex2D(_MainTex,mapUV);
|
||||||
|
|
||||||
|
//float rawIndex = color.b;
|
||||||
|
float rawIndex = color.r;
|
||||||
|
|
||||||
|
color = tex2D(_PalTex,float2(rawIndex,0.5));
|
||||||
|
|
||||||
|
#ifdef UNITY_UI_CLIP_RECT
|
||||||
|
color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef UNITY_UI_ALPHACLIP
|
||||||
|
clip (color.a - 0.001);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
ENDCG
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
9
Assets/Resources/Shader/VirtuaNesDraw.shader.meta
Normal file
9
Assets/Resources/Shader/VirtuaNesDraw.shader.meta
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1a32a21e40b1b3f4f8ee1819cbfcf083
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
87
Assets/Resources/Shader/XMB.mat
Normal file
87
Assets/Resources/Shader/XMB.mat
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!21 &2100000
|
||||||
|
Material:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_Name: XMB
|
||||||
|
m_Shader: {fileID: 4800000, guid: 977cfcf3f7759cd47a756b235fd7b45f, type: 3}
|
||||||
|
m_ShaderKeywords:
|
||||||
|
m_LightmapFlags: 4
|
||||||
|
m_EnableInstancingVariants: 0
|
||||||
|
m_DoubleSidedGI: 0
|
||||||
|
m_CustomRenderQueue: -1
|
||||||
|
stringTagMap: {}
|
||||||
|
disabledShaderPasses: []
|
||||||
|
m_SavedProperties:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TexEnvs:
|
||||||
|
- _BumpMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailAlbedoMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailMask:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailNormalMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _EmissionMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _MainTex:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _MetallicGlossMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _OcclusionMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _PalTex:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _ParallaxMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
m_Floats:
|
||||||
|
- _BumpScale: 1
|
||||||
|
- _ColorMask: 15
|
||||||
|
- _Cutoff: 0.5
|
||||||
|
- _DetailNormalMapScale: 1
|
||||||
|
- _DstBlend: 0
|
||||||
|
- _GlossMapScale: 1
|
||||||
|
- _Glossiness: 0.5
|
||||||
|
- _GlossyReflections: 1
|
||||||
|
- _Metallic: 0
|
||||||
|
- _Mode: 0
|
||||||
|
- _OcclusionStrength: 1
|
||||||
|
- _Parallax: 0.02
|
||||||
|
- _SmoothnessTextureChannel: 0
|
||||||
|
- _SpecularHighlights: 1
|
||||||
|
- _SrcBlend: 1
|
||||||
|
- _Stencil: 0
|
||||||
|
- _StencilComp: 8
|
||||||
|
- _StencilOp: 0
|
||||||
|
- _StencilReadMask: 255
|
||||||
|
- _StencilWriteMask: 255
|
||||||
|
- _UVSec: 0
|
||||||
|
- _UseUIAlphaClip: 0
|
||||||
|
- _ZWrite: 1
|
||||||
|
m_Colors:
|
||||||
|
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
8
Assets/Resources/Shader/XMB.mat.meta
Normal file
8
Assets/Resources/Shader/XMB.mat.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 720a824491a512e44b87300359c91d67
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
163
Assets/Resources/Shader/XMBBackGround.shader
Normal file
163
Assets/Resources/Shader/XMBBackGround.shader
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
Shader "AxibugEmuOnline/XMBBackGround"
|
||||||
|
{
|
||||||
|
Properties
|
||||||
|
{
|
||||||
|
_MainTex ("Sprite Texture", 2D) = "white" {}
|
||||||
|
_Color ("Tint", Color) = (1,1,1,1)
|
||||||
|
|
||||||
|
_StencilComp ("Stencil Comparison", Float) = 8
|
||||||
|
_Stencil ("Stencil ID", Float) = 0
|
||||||
|
_StencilOp ("Stencil Operation", Float) = 0
|
||||||
|
_StencilWriteMask ("Stencil Write Mask", Float) = 255
|
||||||
|
_StencilReadMask ("Stencil Read Mask", Float) = 255
|
||||||
|
|
||||||
|
_ColorMask ("Color Mask", Float) = 15
|
||||||
|
|
||||||
|
|
||||||
|
[Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
SubShader
|
||||||
|
{
|
||||||
|
Tags
|
||||||
|
{
|
||||||
|
"Queue"="Transparent"
|
||||||
|
"IgnoreProjector"="True"
|
||||||
|
"RenderType"="Transparent"
|
||||||
|
"PreviewType"="Plane"
|
||||||
|
"CanUseSpriteAtlas"="True"
|
||||||
|
}
|
||||||
|
|
||||||
|
Stencil
|
||||||
|
{
|
||||||
|
Ref [_Stencil]
|
||||||
|
Comp [_StencilComp]
|
||||||
|
Pass [_StencilOp]
|
||||||
|
ReadMask [_StencilReadMask]
|
||||||
|
WriteMask [_StencilWriteMask]
|
||||||
|
}
|
||||||
|
|
||||||
|
Cull Off
|
||||||
|
Lighting Off
|
||||||
|
ZWrite Off
|
||||||
|
ZTest [unity_GUIZTestMode]
|
||||||
|
Blend SrcAlpha OneMinusSrcAlpha
|
||||||
|
ColorMask [_ColorMask]
|
||||||
|
|
||||||
|
Pass
|
||||||
|
{
|
||||||
|
Name "Default"
|
||||||
|
CGPROGRAM
|
||||||
|
#pragma vertex vert
|
||||||
|
#pragma fragment frag
|
||||||
|
#pragma target 2.0
|
||||||
|
|
||||||
|
#include "UnityCG.cginc"
|
||||||
|
#include "UnityUI.cginc"
|
||||||
|
|
||||||
|
#pragma multi_compile_local _ UNITY_UI_CLIP_RECT
|
||||||
|
#pragma multi_compile_local _ UNITY_UI_ALPHACLIP
|
||||||
|
|
||||||
|
struct appdata_t
|
||||||
|
{
|
||||||
|
float4 vertex : POSITION;
|
||||||
|
float4 color : COLOR;
|
||||||
|
float2 texcoord : TEXCOORD0;
|
||||||
|
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||||
|
};
|
||||||
|
|
||||||
|
struct v2f
|
||||||
|
{
|
||||||
|
float4 vertex : SV_POSITION;
|
||||||
|
fixed4 color : COLOR;
|
||||||
|
float2 texcoord : TEXCOORD0;
|
||||||
|
float4 worldPosition : TEXCOORD1;
|
||||||
|
UNITY_VERTEX_OUTPUT_STEREO
|
||||||
|
};
|
||||||
|
|
||||||
|
sampler2D _MainTex;
|
||||||
|
fixed4 _Color;
|
||||||
|
fixed4 _TextureSampleAdd;
|
||||||
|
float4 _ClipRect;
|
||||||
|
float4 _MainTex_ST;
|
||||||
|
float4 _MainTex_TexelSize;
|
||||||
|
|
||||||
|
float wave(float x, float frequency, float speed, float midHeight, float maxHeight)
|
||||||
|
{
|
||||||
|
return (sin(frequency * (x + speed * (((1. - (pow(cos(0.002 * (_Time.y + 400.)), 2.) + 1.) / 2.) + .1) * 2048.))) * (maxHeight - midHeight)) + midHeight;
|
||||||
|
}
|
||||||
|
float percentHigh(float currentY, float waveHeight, float maxHeight, float power)
|
||||||
|
{
|
||||||
|
float percentWave = max(waveHeight - currentY, 0.0) / maxHeight;
|
||||||
|
return pow(1.0 - percentWave, power);
|
||||||
|
}
|
||||||
|
float waveColor(float2 uv, float waveHeight, float maxHeight, float frequency, float power)
|
||||||
|
{
|
||||||
|
float percentWave = percentHigh(uv.y, waveHeight, maxHeight, power);
|
||||||
|
return clamp(percentWave + 0.8, 0.0, 1.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
v2f vert(appdata_t v)
|
||||||
|
{
|
||||||
|
v2f OUT;
|
||||||
|
UNITY_SETUP_INSTANCE_ID(v);
|
||||||
|
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT);
|
||||||
|
OUT.worldPosition = v.vertex;
|
||||||
|
OUT.vertex = UnityObjectToClipPos(OUT.worldPosition);
|
||||||
|
|
||||||
|
OUT.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
|
||||||
|
|
||||||
|
OUT.color = v.color * _Color;
|
||||||
|
return OUT;
|
||||||
|
}
|
||||||
|
|
||||||
|
fixed4 frag(v2f IN) : SV_Target
|
||||||
|
{
|
||||||
|
float2 uv= IN.texcoord;
|
||||||
|
// Lerped background
|
||||||
|
float3 blue = float3(0, 0.4, 1);
|
||||||
|
float3 blue2 = float3(0, 0.7, 1);
|
||||||
|
float amount = (uv.x + uv.y) / 2.0;
|
||||||
|
float3 bg = lerp(blue2, blue, amount);
|
||||||
|
|
||||||
|
// Overlayed sine waves
|
||||||
|
float midHeight1 = 0.4;
|
||||||
|
float maxHeight1 = 0.5 + wave(0.0, 4.0, 0.02, 0.0, 0.02);
|
||||||
|
float power1 = 50.0; //Higher power means thinner line
|
||||||
|
float frequency1 = 2.0 + wave(0.0, 3.0, 0.03, 0.0, 0.02);
|
||||||
|
float speed1 = 0.4 + wave(0.0, 2.2, 0.04, 0.0, 0.01);
|
||||||
|
float waveHeight1 = wave(uv.x, frequency1, speed1, midHeight1, maxHeight1);
|
||||||
|
float waveCol1 = waveColor(uv, waveHeight1, maxHeight1, frequency1, power1);
|
||||||
|
|
||||||
|
float midHeight2 = 0.42;
|
||||||
|
float maxHeight2 = 0.54 + wave(0.0, 3.0, 0.04, 0.0, 0.02);
|
||||||
|
float power2 = 50.0; //Higher power means thinner line
|
||||||
|
float frequency2 = 2.1 + wave(0.0, 4.0, 0.05, 0.0, 0.02);
|
||||||
|
float speed2 = 0.3 + wave(0.0, 2.0, 0.02, 0.0, 0.01);
|
||||||
|
float waveHeight2 = wave(uv.x, frequency2, speed2, midHeight2, maxHeight2);
|
||||||
|
float waveCol2 = waveColor(uv, waveHeight2, maxHeight2, frequency2, power2);
|
||||||
|
|
||||||
|
float3 col = bg;
|
||||||
|
col = lerp(col, waveCol1 * col, step(uv.y, waveHeight1));
|
||||||
|
col = lerp(col, waveCol2 * col, step(uv.y, waveHeight2));
|
||||||
|
|
||||||
|
// Output to screen
|
||||||
|
fixed4 fragColor = float4(col,1.0);
|
||||||
|
|
||||||
|
#ifdef UNITY_UI_CLIP_RECT
|
||||||
|
fragColor.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef UNITY_UI_ALPHACLIP
|
||||||
|
clip (fragColor.a - 0.001);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return fragColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ENDCG
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
9
Assets/Resources/Shader/XMBBackGround.shader.meta
Normal file
9
Assets/Resources/Shader/XMBBackGround.shader.meta
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 977cfcf3f7759cd47a756b235fd7b45f
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/Scenes.meta
Normal file
8
Assets/Scenes.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 41e261b54f9ef87449561829c1a4cddf
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
651
Assets/Scenes/SampleScene.unity
Normal file
651
Assets/Scenes/SampleScene.unity
Normal file
@ -0,0 +1,651 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!29 &1
|
||||||
|
OcclusionCullingSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_OcclusionBakeSettings:
|
||||||
|
smallestOccluder: 5
|
||||||
|
smallestHole: 0.25
|
||||||
|
backfaceThreshold: 100
|
||||||
|
m_SceneGUID: 00000000000000000000000000000000
|
||||||
|
m_OcclusionCullingData: {fileID: 0}
|
||||||
|
--- !u!104 &2
|
||||||
|
RenderSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 9
|
||||||
|
m_Fog: 0
|
||||||
|
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||||
|
m_FogMode: 3
|
||||||
|
m_FogDensity: 0.01
|
||||||
|
m_LinearFogStart: 0
|
||||||
|
m_LinearFogEnd: 300
|
||||||
|
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
|
||||||
|
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
|
||||||
|
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
|
||||||
|
m_AmbientIntensity: 1
|
||||||
|
m_AmbientMode: 0
|
||||||
|
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
|
||||||
|
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_HaloStrength: 0.5
|
||||||
|
m_FlareStrength: 1
|
||||||
|
m_FlareFadeSpeed: 3
|
||||||
|
m_HaloTexture: {fileID: 0}
|
||||||
|
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_DefaultReflectionMode: 0
|
||||||
|
m_DefaultReflectionResolution: 128
|
||||||
|
m_ReflectionBounces: 1
|
||||||
|
m_ReflectionIntensity: 1
|
||||||
|
m_CustomReflection: {fileID: 0}
|
||||||
|
m_Sun: {fileID: 0}
|
||||||
|
m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1}
|
||||||
|
m_UseRadianceAmbientProbe: 0
|
||||||
|
--- !u!157 &3
|
||||||
|
LightmapSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 12
|
||||||
|
m_GIWorkflowMode: 0
|
||||||
|
m_GISettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_BounceScale: 1
|
||||||
|
m_IndirectOutputScale: 1
|
||||||
|
m_AlbedoBoost: 1
|
||||||
|
m_EnvironmentLightingMode: 0
|
||||||
|
m_EnableBakedLightmaps: 1
|
||||||
|
m_EnableRealtimeLightmaps: 0
|
||||||
|
m_LightmapEditorSettings:
|
||||||
|
serializedVersion: 12
|
||||||
|
m_Resolution: 2
|
||||||
|
m_BakeResolution: 10
|
||||||
|
m_AtlasSize: 512
|
||||||
|
m_AO: 0
|
||||||
|
m_AOMaxDistance: 1
|
||||||
|
m_CompAOExponent: 1
|
||||||
|
m_CompAOExponentDirect: 0
|
||||||
|
m_ExtractAmbientOcclusion: 0
|
||||||
|
m_Padding: 2
|
||||||
|
m_LightmapParameters: {fileID: 0}
|
||||||
|
m_LightmapsBakeMode: 1
|
||||||
|
m_TextureCompression: 1
|
||||||
|
m_FinalGather: 0
|
||||||
|
m_FinalGatherFiltering: 1
|
||||||
|
m_FinalGatherRayCount: 256
|
||||||
|
m_ReflectionCompression: 2
|
||||||
|
m_MixedBakeMode: 2
|
||||||
|
m_BakeBackend: 1
|
||||||
|
m_PVRSampling: 1
|
||||||
|
m_PVRDirectSampleCount: 32
|
||||||
|
m_PVRSampleCount: 256
|
||||||
|
m_PVRBounces: 2
|
||||||
|
m_PVREnvironmentSampleCount: 256
|
||||||
|
m_PVREnvironmentReferencePointCount: 2048
|
||||||
|
m_PVRFilteringMode: 2
|
||||||
|
m_PVRDenoiserTypeDirect: 0
|
||||||
|
m_PVRDenoiserTypeIndirect: 0
|
||||||
|
m_PVRDenoiserTypeAO: 0
|
||||||
|
m_PVRFilterTypeDirect: 0
|
||||||
|
m_PVRFilterTypeIndirect: 0
|
||||||
|
m_PVRFilterTypeAO: 0
|
||||||
|
m_PVREnvironmentMIS: 0
|
||||||
|
m_PVRCulling: 1
|
||||||
|
m_PVRFilteringGaussRadiusDirect: 1
|
||||||
|
m_PVRFilteringGaussRadiusIndirect: 5
|
||||||
|
m_PVRFilteringGaussRadiusAO: 2
|
||||||
|
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
|
||||||
|
m_PVRFilteringAtrousPositionSigmaIndirect: 2
|
||||||
|
m_PVRFilteringAtrousPositionSigmaAO: 1
|
||||||
|
m_ExportTrainingData: 0
|
||||||
|
m_TrainingDataDestination: TrainingData
|
||||||
|
m_LightProbeSampleCountMultiplier: 4
|
||||||
|
m_LightingDataAsset: {fileID: 0}
|
||||||
|
m_LightingSettings: {fileID: 2020340465}
|
||||||
|
--- !u!196 &4
|
||||||
|
NavMeshSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_BuildSettings:
|
||||||
|
serializedVersion: 3
|
||||||
|
agentTypeID: 0
|
||||||
|
agentRadius: 0.5
|
||||||
|
agentHeight: 2
|
||||||
|
agentSlope: 45
|
||||||
|
agentClimb: 0.4
|
||||||
|
ledgeDropHeight: 0
|
||||||
|
maxJumpAcrossDistance: 0
|
||||||
|
minRegionArea: 2
|
||||||
|
manualCellSize: 0
|
||||||
|
cellSize: 0.16666667
|
||||||
|
manualTileSize: 0
|
||||||
|
tileSize: 256
|
||||||
|
buildHeightMesh: 0
|
||||||
|
maxJobWorkers: 0
|
||||||
|
preserveTilesOutsideBounds: 0
|
||||||
|
debug:
|
||||||
|
m_Flags: 0
|
||||||
|
m_NavMeshData: {fileID: 0}
|
||||||
|
--- !u!1 &170076733
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 170076735}
|
||||||
|
- component: {fileID: 170076734}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Directional Light
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!108 &170076734
|
||||||
|
Light:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 170076733}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 10
|
||||||
|
m_Type: 1
|
||||||
|
m_Shape: 0
|
||||||
|
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
|
||||||
|
m_Intensity: 1
|
||||||
|
m_Range: 10
|
||||||
|
m_SpotAngle: 30
|
||||||
|
m_InnerSpotAngle: 21.80208
|
||||||
|
m_CookieSize: 10
|
||||||
|
m_Shadows:
|
||||||
|
m_Type: 2
|
||||||
|
m_Resolution: -1
|
||||||
|
m_CustomResolution: -1
|
||||||
|
m_Strength: 1
|
||||||
|
m_Bias: 0.05
|
||||||
|
m_NormalBias: 0.4
|
||||||
|
m_NearPlane: 0.2
|
||||||
|
m_CullingMatrixOverride:
|
||||||
|
e00: 1
|
||||||
|
e01: 0
|
||||||
|
e02: 0
|
||||||
|
e03: 0
|
||||||
|
e10: 0
|
||||||
|
e11: 1
|
||||||
|
e12: 0
|
||||||
|
e13: 0
|
||||||
|
e20: 0
|
||||||
|
e21: 0
|
||||||
|
e22: 1
|
||||||
|
e23: 0
|
||||||
|
e30: 0
|
||||||
|
e31: 0
|
||||||
|
e32: 0
|
||||||
|
e33: 1
|
||||||
|
m_UseCullingMatrixOverride: 0
|
||||||
|
m_Cookie: {fileID: 0}
|
||||||
|
m_DrawHalo: 0
|
||||||
|
m_Flare: {fileID: 0}
|
||||||
|
m_RenderMode: 0
|
||||||
|
m_CullingMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_RenderingLayerMask: 1
|
||||||
|
m_Lightmapping: 1
|
||||||
|
m_LightShadowCasterMode: 0
|
||||||
|
m_AreaSize: {x: 1, y: 1}
|
||||||
|
m_BounceIntensity: 1
|
||||||
|
m_ColorTemperature: 6570
|
||||||
|
m_UseColorTemperature: 0
|
||||||
|
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_UseBoundingSphereOverride: 0
|
||||||
|
m_UseViewFrustumForShadowCasterCull: 1
|
||||||
|
m_ShadowRadius: 0
|
||||||
|
m_ShadowAngle: 0
|
||||||
|
--- !u!4 &170076735
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 170076733}
|
||||||
|
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
|
||||||
|
m_LocalPosition: {x: 0, y: 3, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 1
|
||||||
|
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
|
||||||
|
--- !u!1 &245020789
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 245020792}
|
||||||
|
- component: {fileID: 245020791}
|
||||||
|
- component: {fileID: 245020790}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: EventSystem
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &245020790
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 245020789}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_SendPointerHoverToParent: 1
|
||||||
|
m_HorizontalAxis: Horizontal
|
||||||
|
m_VerticalAxis: Vertical
|
||||||
|
m_SubmitButton: Submit
|
||||||
|
m_CancelButton: Cancel
|
||||||
|
m_InputActionsPerSecond: 10
|
||||||
|
m_RepeatDelay: 0.5
|
||||||
|
m_ForceModuleActive: 0
|
||||||
|
--- !u!114 &245020791
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 245020789}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_FirstSelected: {fileID: 0}
|
||||||
|
m_sendNavigationEvents: 1
|
||||||
|
m_DragThreshold: 10
|
||||||
|
--- !u!4 &245020792
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 245020789}
|
||||||
|
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_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 3
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1 &534669902
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 534669905}
|
||||||
|
- component: {fileID: 534669904}
|
||||||
|
- component: {fileID: 534669903}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Main Camera
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!81 &534669903
|
||||||
|
AudioListener:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 534669902}
|
||||||
|
m_Enabled: 1
|
||||||
|
--- !u!20 &534669904
|
||||||
|
Camera:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 534669902}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ClearFlags: 1
|
||||||
|
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
|
||||||
|
m_projectionMatrixMode: 1
|
||||||
|
m_GateFitMode: 2
|
||||||
|
m_FOVAxisMode: 0
|
||||||
|
m_Iso: 200
|
||||||
|
m_ShutterSpeed: 0.005
|
||||||
|
m_Aperture: 16
|
||||||
|
m_FocusDistance: 10
|
||||||
|
m_FocalLength: 50
|
||||||
|
m_BladeCount: 5
|
||||||
|
m_Curvature: {x: 2, y: 11}
|
||||||
|
m_BarrelClipping: 0.25
|
||||||
|
m_Anamorphism: 0
|
||||||
|
m_SensorSize: {x: 36, y: 24}
|
||||||
|
m_LensShift: {x: 0, y: 0}
|
||||||
|
m_NormalizedViewPortRect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 1
|
||||||
|
height: 1
|
||||||
|
near clip plane: 0.3
|
||||||
|
far clip plane: 1000
|
||||||
|
field of view: 60
|
||||||
|
orthographic: 0
|
||||||
|
orthographic size: 5
|
||||||
|
m_Depth: -1
|
||||||
|
m_CullingMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_RenderingPath: -1
|
||||||
|
m_TargetTexture: {fileID: 0}
|
||||||
|
m_TargetDisplay: 0
|
||||||
|
m_TargetEye: 3
|
||||||
|
m_HDR: 1
|
||||||
|
m_AllowMSAA: 1
|
||||||
|
m_AllowDynamicResolution: 0
|
||||||
|
m_ForceIntoRT: 0
|
||||||
|
m_OcclusionCulling: 1
|
||||||
|
m_StereoConvergence: 10
|
||||||
|
m_StereoSeparation: 0.022
|
||||||
|
--- !u!4 &534669905
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 534669902}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 1, z: -10}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!224 &1422991408 stripped
|
||||||
|
RectTransform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 224733832085164238, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 1833574681}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!1001 &1833574681
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 1895966300}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 1692791539517408, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: MainPanel
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 224733832085164238, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
propertyPath: m_Pivot.x
|
||||||
|
value: 0.5
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 224733832085164238, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
propertyPath: m_Pivot.y
|
||||||
|
value: 0.5
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 224733832085164238, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
propertyPath: m_RootOrder
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 224733832085164238, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.x
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 224733832085164238, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.y
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 224733832085164238, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
propertyPath: m_AnchorMin.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 224733832085164238, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
propertyPath: m_AnchorMin.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 224733832085164238, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
propertyPath: m_SizeDelta.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 224733832085164238, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
propertyPath: m_SizeDelta.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 224733832085164238, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 224733832085164238, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 224733832085164238, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 224733832085164238, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 224733832085164238, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 224733832085164238, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 224733832085164238, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 224733832085164238, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
propertyPath: m_AnchoredPosition.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 224733832085164238, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
propertyPath: m_AnchoredPosition.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 224733832085164238, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 224733832085164238, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 224733832085164238, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects: []
|
||||||
|
m_AddedGameObjects: []
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: 6d30862c18dfc6d4298eaa634e09bddb, type: 3}
|
||||||
|
--- !u!1 &1895966296
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1895966300}
|
||||||
|
- component: {fileID: 1895966299}
|
||||||
|
- component: {fileID: 1895966298}
|
||||||
|
- component: {fileID: 1895966297}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Canvas
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &1895966297
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1895966296}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_IgnoreReversedGraphics: 1
|
||||||
|
m_BlockingObjects: 0
|
||||||
|
m_BlockingMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
--- !u!114 &1895966298
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1895966296}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_UiScaleMode: 0
|
||||||
|
m_ReferencePixelsPerUnit: 100
|
||||||
|
m_ScaleFactor: 1
|
||||||
|
m_ReferenceResolution: {x: 800, y: 600}
|
||||||
|
m_ScreenMatchMode: 0
|
||||||
|
m_MatchWidthOrHeight: 0
|
||||||
|
m_PhysicalUnit: 3
|
||||||
|
m_FallbackScreenDPI: 96
|
||||||
|
m_DefaultSpriteDPI: 96
|
||||||
|
m_DynamicPixelsPerUnit: 1
|
||||||
|
m_PresetInfoIsWorld: 0
|
||||||
|
--- !u!223 &1895966299
|
||||||
|
Canvas:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1895966296}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 3
|
||||||
|
m_RenderMode: 0
|
||||||
|
m_Camera: {fileID: 0}
|
||||||
|
m_PlaneDistance: 100
|
||||||
|
m_PixelPerfect: 0
|
||||||
|
m_ReceivesEvents: 1
|
||||||
|
m_OverrideSorting: 0
|
||||||
|
m_OverridePixelPerfect: 0
|
||||||
|
m_SortingBucketNormalizedSize: 0
|
||||||
|
m_AdditionalShaderChannelsFlag: 0
|
||||||
|
m_UpdateRectTransformForStandalone: 0
|
||||||
|
m_SortingLayerID: 0
|
||||||
|
m_SortingOrder: 0
|
||||||
|
m_TargetDisplay: 0
|
||||||
|
--- !u!224 &1895966300
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1895966296}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 0, y: 0, z: 0}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 1422991408}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 2
|
||||||
|
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, y: 0}
|
||||||
|
--- !u!850595691 &2020340465
|
||||||
|
LightingSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: Settings.lighting
|
||||||
|
serializedVersion: 6
|
||||||
|
m_GIWorkflowMode: 0
|
||||||
|
m_EnableBakedLightmaps: 1
|
||||||
|
m_EnableRealtimeLightmaps: 0
|
||||||
|
m_RealtimeEnvironmentLighting: 1
|
||||||
|
m_BounceScale: 1
|
||||||
|
m_AlbedoBoost: 1
|
||||||
|
m_IndirectOutputScale: 1
|
||||||
|
m_UsingShadowmask: 1
|
||||||
|
m_BakeBackend: 1
|
||||||
|
m_LightmapMaxSize: 512
|
||||||
|
m_BakeResolution: 10
|
||||||
|
m_Padding: 2
|
||||||
|
m_LightmapCompression: 3
|
||||||
|
m_AO: 0
|
||||||
|
m_AOMaxDistance: 1
|
||||||
|
m_CompAOExponent: 1
|
||||||
|
m_CompAOExponentDirect: 0
|
||||||
|
m_ExtractAO: 0
|
||||||
|
m_MixedBakeMode: 2
|
||||||
|
m_LightmapsBakeMode: 1
|
||||||
|
m_FilterMode: 1
|
||||||
|
m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_ExportTrainingData: 0
|
||||||
|
m_TrainingDataDestination: TrainingData
|
||||||
|
m_RealtimeResolution: 2
|
||||||
|
m_ForceWhiteAlbedo: 0
|
||||||
|
m_ForceUpdates: 0
|
||||||
|
m_FinalGather: 0
|
||||||
|
m_FinalGatherRayCount: 256
|
||||||
|
m_FinalGatherFiltering: 1
|
||||||
|
m_PVRCulling: 1
|
||||||
|
m_PVRSampling: 1
|
||||||
|
m_PVRDirectSampleCount: 32
|
||||||
|
m_PVRSampleCount: 256
|
||||||
|
m_PVREnvironmentSampleCount: 256
|
||||||
|
m_PVREnvironmentReferencePointCount: 2048
|
||||||
|
m_LightProbeSampleCountMultiplier: 4
|
||||||
|
m_PVRBounces: 2
|
||||||
|
m_PVRMinBounces: 2
|
||||||
|
m_PVREnvironmentImportanceSampling: 0
|
||||||
|
m_PVRFilteringMode: 2
|
||||||
|
m_PVRDenoiserTypeDirect: 0
|
||||||
|
m_PVRDenoiserTypeIndirect: 0
|
||||||
|
m_PVRDenoiserTypeAO: 0
|
||||||
|
m_PVRFilterTypeDirect: 0
|
||||||
|
m_PVRFilterTypeIndirect: 0
|
||||||
|
m_PVRFilterTypeAO: 0
|
||||||
|
m_PVRFilteringGaussRadiusDirect: 1
|
||||||
|
m_PVRFilteringGaussRadiusIndirect: 5
|
||||||
|
m_PVRFilteringGaussRadiusAO: 2
|
||||||
|
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
|
||||||
|
m_PVRFilteringAtrousPositionSigmaIndirect: 2
|
||||||
|
m_PVRFilteringAtrousPositionSigmaAO: 1
|
||||||
|
m_PVRTiledBaking: 0
|
||||||
|
m_NumRaysToShootPerTexel: -1
|
||||||
|
m_RespectSceneVisibilityWhenBakingGI: 0
|
||||||
7
Assets/Scenes/SampleScene.unity.meta
Normal file
7
Assets/Scenes/SampleScene.unity.meta
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b9d9df3435d39294491fe74bf1af51b6
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/Script.meta
Normal file
8
Assets/Script.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 83977fec0ac81f64ca1a41d7a58b36b5
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/Script/AxiHttp.meta
Normal file
8
Assets/Script/AxiHttp.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f31afb08208660347b629e55754f92db
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
1141
Assets/Script/AxiHttp/AxiHttp.cs
Normal file
1141
Assets/Script/AxiHttp/AxiHttp.cs
Normal file
File diff suppressed because it is too large
Load Diff
11
Assets/Script/AxiHttp/AxiHttp.cs.meta
Normal file
11
Assets/Script/AxiHttp/AxiHttp.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0e48965a417a8f04cbf10761f98a569d
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/Script/AxiNSApi.meta
Normal file
8
Assets/Script/AxiNSApi.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3543dd49fe7f28d4f9936823ded12255
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
41
Assets/Script/AxiNSApi/AxiNS.cs
Normal file
41
Assets/Script/AxiNSApi/AxiNS.cs
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
#if UNITY_SWITCH
|
||||||
|
using nn.account;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
public class AxiNS
|
||||||
|
{
|
||||||
|
static AxiNS _instance;
|
||||||
|
public static AxiNS instance
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_instance == null)
|
||||||
|
_instance = new AxiNS();
|
||||||
|
return _instance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public AxiNSUser user;
|
||||||
|
public AxiNSMount mount;
|
||||||
|
public AxiNSIO io;
|
||||||
|
public AxiNSWaitHandle wait;
|
||||||
|
AxiNS()
|
||||||
|
{
|
||||||
|
user = new AxiNSUser();
|
||||||
|
mount = new AxiNSMount();
|
||||||
|
io = new AxiNSIO();
|
||||||
|
wait = new AxiNSWaitHandle();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 初始化(最好在项目第一时间初始化,保证先初始化再使用某些东西,才不闪退)
|
||||||
|
/// </summary>
|
||||||
|
public void Init()
|
||||||
|
{
|
||||||
|
#if UNITY_SWITCH
|
||||||
|
if (!user.GetUserID(out Uid uid))
|
||||||
|
return;
|
||||||
|
mount.MountSave(uid);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Script/AxiNSApi/AxiNS.cs.meta
Normal file
11
Assets/Script/AxiNSApi/AxiNS.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 52541c757d45c4c488726bcc39f73ba6
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
3
Assets/Script/AxiNSApi/AxiNSApi.asmdef
Normal file
3
Assets/Script/AxiNSApi/AxiNSApi.asmdef
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"name": "AxiNSApi"
|
||||||
|
}
|
||||||
7
Assets/Script/AxiNSApi/AxiNSApi.asmdef.meta
Normal file
7
Assets/Script/AxiNSApi/AxiNSApi.asmdef.meta
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c8ad600c72d635843bd8aeb9d8aebfb8
|
||||||
|
AssemblyDefinitionImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
367
Assets/Script/AxiNSApi/AxiNSErrCode.cs
Normal file
367
Assets/Script/AxiNSApi/AxiNSErrCode.cs
Normal file
@ -0,0 +1,367 @@
|
|||||||
|
public static class AxiNSErrCode
|
||||||
|
{
|
||||||
|
#if UNITY_SWITCH
|
||||||
|
public static string GetErrorInfo(this nn.Result result)
|
||||||
|
{
|
||||||
|
if (result.IsSuccess())
|
||||||
|
return "NoErr";
|
||||||
|
return GetErrorDetails(result.GetModule(), result.GetDescription());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
/// <summary>
|
||||||
|
/// 根据模块 ID 和描述 ID 返回任天堂 Switch 错误码的含义、可能原因及解决办法。
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="moduleId">模块 ID</param>
|
||||||
|
/// <param name="descriptionId">描述 ID</param>
|
||||||
|
/// <returns>包含错误码、含义、可能原因及解决办法的字符串</returns>
|
||||||
|
public static string GetErrorDetails(int moduleId, int descriptionId)
|
||||||
|
{
|
||||||
|
string errorCode = $"2{moduleId:D3}-{descriptionId:D4}"; // 格式化为 2XXX-YYYY
|
||||||
|
string meaning = "未知错误";
|
||||||
|
string causeAndSolution = "未知错误,请检查日志或联系任天堂支持。";
|
||||||
|
|
||||||
|
switch (moduleId)
|
||||||
|
{
|
||||||
|
case 2: // nn::fs (文件系统)
|
||||||
|
switch (descriptionId)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
meaning = "ResultPathNotFound";
|
||||||
|
causeAndSolution = "路径未找到。检查路径是否正确,确保父目录存在。使用 nn.fs.Directory.Create 创建父目录。";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
meaning = "ResultPermissionDenied";
|
||||||
|
causeAndSolution = "权限被拒绝。可能是 Atmosphere 限制了 save:/ 的写权限。尝试调整 Atmosphere 配置或使用 sd:/ 挂载点。";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
meaning = "ResultPathAlreadyExists";
|
||||||
|
causeAndSolution = "路径已存在。检查路径是否被占用,删除或重命名现有文件/目录。";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
meaning = "ResultTargetLocked";
|
||||||
|
causeAndSolution = "目标被锁定。可能是文件正在使用中,关闭相关程序后重试。";
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
meaning = "ResultTargetNotFound";
|
||||||
|
causeAndSolution = "目标未找到。确认目标文件/目录是否存在,检查路径拼写。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 5: // nn::err (错误处理)
|
||||||
|
switch (descriptionId)
|
||||||
|
{
|
||||||
|
case 3:
|
||||||
|
meaning = "microSD 卡相关错误";
|
||||||
|
causeAndSolution = "无法下载软件,可能是 microSD 卡损坏。移除 microSD 卡,重新插入,或更换卡。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 16: // nn::oe (操作系统错误)
|
||||||
|
switch (descriptionId)
|
||||||
|
{
|
||||||
|
case 247:
|
||||||
|
meaning = "microSD 卡存储问题";
|
||||||
|
causeAndSolution = "microSD 卡损坏或不兼容。更换 microSD 卡,或将默认存储位置设置为系统内存。";
|
||||||
|
break;
|
||||||
|
case 390:
|
||||||
|
meaning = "不支持的 microSD 卡";
|
||||||
|
causeAndSolution = "microSD 卡格式不受支持。格式化为 exFAT 或 FAT32 后重试。";
|
||||||
|
break;
|
||||||
|
case 601:
|
||||||
|
meaning = "microSD 卡数据损坏";
|
||||||
|
causeAndSolution = "microSD 卡数据损坏。备份数据后格式化卡,或更换新卡。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 21: // nn::settings (设置)
|
||||||
|
switch (descriptionId)
|
||||||
|
{
|
||||||
|
case 3:
|
||||||
|
meaning = "系统软件未更新或损坏";
|
||||||
|
causeAndSolution = "系统固件版本过旧或损坏。更新系统固件,或重新安装系统。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 101: // nn::fssrv (文件系统服务)
|
||||||
|
switch (descriptionId)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
meaning = "系统错误";
|
||||||
|
causeAndSolution = "通用系统错误。重启 Switch,若问题持续,联系任天堂支持。";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
meaning = "固件损坏";
|
||||||
|
causeAndSolution = "系统固件损坏。尝试更新系统,或恢复出厂设置(注意备份数据)。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 107: // nn::nim (网络安装管理)
|
||||||
|
switch (descriptionId)
|
||||||
|
{
|
||||||
|
case 427:
|
||||||
|
meaning = "固件损坏";
|
||||||
|
causeAndSolution = "系统固件损坏。更新系统固件,或重新安装系统。";
|
||||||
|
break;
|
||||||
|
case 445:
|
||||||
|
meaning = "硬件损坏或盗版内容";
|
||||||
|
causeAndSolution = "可能是硬件损坏或存在盗版内容。删除盗版内容,重启 Switch,若无效联系任天堂支持。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 110: // nn::socket (网络套接字)
|
||||||
|
switch (descriptionId)
|
||||||
|
{
|
||||||
|
case 1000:
|
||||||
|
meaning = "网络连接失败";
|
||||||
|
causeAndSolution = "无法连接到网络。检查网络连接,重启路由器,尝试切换到其他网络频段(2.4GHz/5GHz)。";
|
||||||
|
break;
|
||||||
|
case 2003:
|
||||||
|
meaning = "无线网络连接失败";
|
||||||
|
causeAndSolution = "无线信号弱或不稳定。靠近路由器,移除干扰物,或重启路由器。";
|
||||||
|
break;
|
||||||
|
case 2004:
|
||||||
|
meaning = "网络设置不支持";
|
||||||
|
causeAndSolution = "网络安全类型不受支持。Switch 支持 WEP/WPA/WPA2,调整路由器设置后重试。";
|
||||||
|
break;
|
||||||
|
case 2091:
|
||||||
|
meaning = "有线网络连接失败";
|
||||||
|
causeAndSolution = "有线连接问题。检查网线是否插好,重启 Switch 和路由器。";
|
||||||
|
break;
|
||||||
|
case 3127:
|
||||||
|
meaning = "网络连接失败";
|
||||||
|
causeAndSolution = "网络不稳定。测试网络连接,重启路由器,或联系网络提供商。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 115: // nn::mii (Mii 相关)
|
||||||
|
switch (descriptionId)
|
||||||
|
{
|
||||||
|
case 96:
|
||||||
|
meaning = "Mii 数据错误";
|
||||||
|
causeAndSolution = "Mii 数据损坏。删除并重新创建 Mii,或更新系统。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 139: // nn::nfp (NFC/Amiibo)
|
||||||
|
switch (descriptionId)
|
||||||
|
{
|
||||||
|
case 6:
|
||||||
|
meaning = "Amiibo 读取错误";
|
||||||
|
causeAndSolution = "Amiibo 读取失败。检查 Amiibo 是否损坏,更新系统,或尝试其他 Amiibo。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 153: // nn::ir (红外摄像头)
|
||||||
|
switch (descriptionId)
|
||||||
|
{
|
||||||
|
case 321:
|
||||||
|
meaning = "红外摄像头读取错误";
|
||||||
|
causeAndSolution = "红外摄像头无法读取。检查摄像头是否被遮挡,清洁镜头,或联系任天堂支持。";
|
||||||
|
break;
|
||||||
|
case 1540:
|
||||||
|
meaning = "红外摄像头硬件错误";
|
||||||
|
causeAndSolution = "红外摄像头硬件故障。联系任天堂支持进行维修。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 155: // nn::account (账户服务)
|
||||||
|
switch (descriptionId)
|
||||||
|
{
|
||||||
|
case 8006:
|
||||||
|
meaning = "无法链接任天堂账户";
|
||||||
|
causeAndSolution = "网络问题或服务中断。检查网络连接,稍后重试,或查看任天堂网络状态页面。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 160: // nn::online (在线服务)
|
||||||
|
switch (descriptionId)
|
||||||
|
{
|
||||||
|
case 103:
|
||||||
|
meaning = "无法加入在线匹配";
|
||||||
|
causeAndSolution = "网络不稳定。重启 Switch,检查网络连接,或稍后重试。";
|
||||||
|
break;
|
||||||
|
case 202:
|
||||||
|
meaning = "无法连接到在线服务";
|
||||||
|
causeAndSolution = "服务可能正在维护。查看任天堂网络状态页面,稍后重试。";
|
||||||
|
break;
|
||||||
|
case 8006:
|
||||||
|
meaning = "连接测试失败";
|
||||||
|
causeAndSolution = "网络问题。重启路由器,检查网络设置,或尝试其他网络。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 162: // nn::application (应用程序)
|
||||||
|
switch (descriptionId)
|
||||||
|
{
|
||||||
|
case 2:
|
||||||
|
meaning = "软件崩溃";
|
||||||
|
causeAndSolution = "软件崩溃,可能是盗版内容或固件问题。删除盗版内容,更新系统,或重新安装软件。";
|
||||||
|
break;
|
||||||
|
case 101:
|
||||||
|
meaning = "软件需要更新";
|
||||||
|
causeAndSolution = "游戏或软件需要更新。检查软件更新并安装。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 168: // nn::sys (系统)
|
||||||
|
switch (descriptionId)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
meaning = "需要软件更新";
|
||||||
|
causeAndSolution = "软件需要更新。更新游戏或系统固件。";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
meaning = "系统崩溃";
|
||||||
|
causeAndSolution = "系统崩溃,可能是硬件问题。重启 Switch,若无效联系任天堂支持。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 205: // nn::camera (摄像头)
|
||||||
|
switch (descriptionId)
|
||||||
|
{
|
||||||
|
case 123:
|
||||||
|
meaning = "摄像头读取错误";
|
||||||
|
causeAndSolution = "摄像头无法读取。检查摄像头是否被遮挡,清洁镜头,或联系任天堂支持。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 306: // nn::ngc (网络游戏连接)
|
||||||
|
switch (descriptionId)
|
||||||
|
{
|
||||||
|
case 501:
|
||||||
|
meaning = "无法加入在线匹配";
|
||||||
|
causeAndSolution = "网络连接中断。重启 Switch,检查网络连接,或稍后重试。";
|
||||||
|
break;
|
||||||
|
case 502:
|
||||||
|
meaning = "匹配过程失败";
|
||||||
|
causeAndSolution = "网络不稳定。测试网络连接,重启路由器,或联系网络提供商。";
|
||||||
|
break;
|
||||||
|
case 820:
|
||||||
|
meaning = "在线服务不可用";
|
||||||
|
causeAndSolution = "服务可能正在维护。查看任天堂网络状态页面,稍后重试。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 613: // nn::eShop (eShop)
|
||||||
|
switch (descriptionId)
|
||||||
|
{
|
||||||
|
case 1400:
|
||||||
|
meaning = "无法使用信用卡购买";
|
||||||
|
causeAndSolution = "信用卡信息错误或 eShop 服务问题。检查信用卡信息,稍后重试,或联系任天堂支持。";
|
||||||
|
break;
|
||||||
|
case 6838:
|
||||||
|
meaning = "eShop 连接失败";
|
||||||
|
causeAndSolution = "网络问题或 eShop 维护。检查网络连接,查看任天堂网络状态页面,稍后重试。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 618: // nn::ngc (网络游戏连接)
|
||||||
|
switch (descriptionId)
|
||||||
|
{
|
||||||
|
case 6:
|
||||||
|
meaning = "无法加入在线匹配";
|
||||||
|
causeAndSolution = "网络不稳定。重启 Switch,检查网络连接,或稍后重试。";
|
||||||
|
break;
|
||||||
|
case 201:
|
||||||
|
meaning = "匹配已满";
|
||||||
|
causeAndSolution = "尝试加入的匹配已满。稍后重试,或加入其他匹配。";
|
||||||
|
break;
|
||||||
|
case 501:
|
||||||
|
meaning = "匹配过程失败";
|
||||||
|
causeAndSolution = "网络连接中断。重启 Switch,检查网络连接,或稍后重试。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 801: // nn::sns (社交网络服务)
|
||||||
|
switch (descriptionId)
|
||||||
|
{
|
||||||
|
case 7002:
|
||||||
|
meaning = "无法上传截图到 Twitter";
|
||||||
|
causeAndSolution = "服务可能正在维护。查看任天堂网络状态页面,稍后重试。";
|
||||||
|
break;
|
||||||
|
case 7199:
|
||||||
|
meaning = "无法上传照片到 Facebook";
|
||||||
|
causeAndSolution = "服务可能正在维护。查看任天堂网络状态页面,稍后重试。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 810: // nn::account (账户服务)
|
||||||
|
switch (descriptionId)
|
||||||
|
{
|
||||||
|
case 1224:
|
||||||
|
meaning = "无法登录任天堂账户";
|
||||||
|
causeAndSolution = "网络问题或服务中断。检查网络连接,稍后重试,或查看任天堂网络状态页面。";
|
||||||
|
break;
|
||||||
|
case 1500:
|
||||||
|
meaning = "无法登录 Facebook 账户";
|
||||||
|
causeAndSolution = "服务可能正在维护。重启 Switch,稍后重试。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 811: // nn::account (账户服务)
|
||||||
|
switch (descriptionId)
|
||||||
|
{
|
||||||
|
case 1006:
|
||||||
|
meaning = "无法链接任天堂账户";
|
||||||
|
causeAndSolution = "网络问题或 DNS 错误。检查网络连接,尝试更换 DNS(如 8.8.8.8),或稍后重试。";
|
||||||
|
break;
|
||||||
|
case 5001:
|
||||||
|
meaning = "无法访问 eShop";
|
||||||
|
causeAndSolution = "eShop 服务中断。查看任天堂网络状态页面,稍后重试。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 813: // nn::eShop (eShop)
|
||||||
|
switch (descriptionId)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
meaning = "eShop 访问失败";
|
||||||
|
causeAndSolution = "eShop 服务中断。查看任天堂网络状态页面,稍后重试。";
|
||||||
|
break;
|
||||||
|
case 2470:
|
||||||
|
meaning = "交易处理失败";
|
||||||
|
causeAndSolution = "信用卡信息错误或 eShop 服务问题。检查信用卡信息,稍后重试,或联系任天堂支持。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 819: // nn::online (在线服务)
|
||||||
|
switch (descriptionId)
|
||||||
|
{
|
||||||
|
case 3:
|
||||||
|
meaning = "软件被暂停";
|
||||||
|
causeAndSolution = "同一账户在另一台设备上使用。关闭其他设备上的软件,或使用不同账户。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
meaning = "未知模块";
|
||||||
|
causeAndSolution = "未识别的模块 ID,请检查日志或联系任天堂支持。";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $"错误码: {errorCode}\n含义: {meaning}\n可能原因及解决办法: {causeAndSolution}";
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Script/AxiNSApi/AxiNSErrCode.cs.meta
Normal file
11
Assets/Script/AxiNSApi/AxiNSErrCode.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0e28b69692cb1bb4a9d8ddb91274fa50
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
697
Assets/Script/AxiNSApi/AxiNSIO.cs
Normal file
697
Assets/Script/AxiNSApi/AxiNSIO.cs
Normal file
@ -0,0 +1,697 @@
|
|||||||
|
#if UNITY_SWITCH
|
||||||
|
using nn.fs;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
|
public class AxiNSIO
|
||||||
|
{
|
||||||
|
string save_name => AxiNS.instance.mount.SaveMountName;
|
||||||
|
public string save_path => $"{save_name}:/";
|
||||||
|
#if UNITY_SWITCH
|
||||||
|
private FileHandle fileHandle = new nn.fs.FileHandle();
|
||||||
|
#endif
|
||||||
|
/// <summary>
|
||||||
|
/// 检查Path是否存在
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="filePath"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool CheckPathExists(string filePath)
|
||||||
|
{
|
||||||
|
#if !UNITY_SWITCH
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
nn.fs.EntryType entryType = 0;
|
||||||
|
nn.Result result = nn.fs.FileSystem.GetEntryType(ref entryType, filePath);
|
||||||
|
//result.abortUnlessSuccess();
|
||||||
|
//这个异常捕获。真的别扭
|
||||||
|
return nn.fs.FileSystem.ResultPathAlreadyExists.Includes(result);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 检查Path是否不存在
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="filePath"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool CheckPathNotFound(string filePath)
|
||||||
|
{
|
||||||
|
#if !UNITY_SWITCH
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
nn.fs.EntryType entryType = 0;
|
||||||
|
nn.Result result = nn.fs.FileSystem.GetEntryType(ref entryType, filePath);
|
||||||
|
//这个异常捕获。真的别扭
|
||||||
|
return nn.fs.FileSystem.ResultPathNotFound.Includes(result);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 创建目录,目录存在也会返回true
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="filePath"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool CreateDir(string filePath)
|
||||||
|
{
|
||||||
|
#if !UNITY_SWITCH
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
// 使用封装函数检查和创建父目录
|
||||||
|
if (!EnsureParentDirectory(filePath, true))
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"无法确保父目录,文件写入取消: {filePath}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 保存并创建文件(如果目录不存在回先自动创建目录)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="filePath"></param>
|
||||||
|
/// <param name="bw"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool FileToSaveWithCreate(string filePath, System.IO.MemoryStream ms)
|
||||||
|
{
|
||||||
|
return FileToSaveWithCreate(filePath, ms.ToArray());
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 保存并创建文件(如果目录不存在回先自动创建目录)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="filePath"></param>
|
||||||
|
/// <param name="data"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public AxiNSWait_FileToSaveByMSWithCreate FileToSaveWithCreateAsync(string filePath, System.IO.MemoryStream ms)
|
||||||
|
{
|
||||||
|
var wait = new AxiNSWait_FileToSaveByMSWithCreate(filePath, ms);
|
||||||
|
AxiNS.instance.wait.AddWait(wait);
|
||||||
|
return wait;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 保存并创建文件(如果目录不存在回先自动创建目录)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="filePath"></param>
|
||||||
|
/// <param name="data"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool FileToSaveWithCreate(string filePath, byte[] data)
|
||||||
|
{
|
||||||
|
#if !UNITY_SWITCH
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
if (!AxiNS.instance.mount.SaveIsMount)
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"Save 尚未挂载,无法存储 {filePath}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
nn.Result result;
|
||||||
|
#if UNITY_SWITCH && !UNITY_EDITOR
|
||||||
|
// 阻止用户在保存时,退出游戏
|
||||||
|
// Switch 条例 0080
|
||||||
|
UnityEngine.Switch.Notification.EnterExitRequestHandlingSection();
|
||||||
|
#endif
|
||||||
|
// 使用封装函数检查和创建父目录
|
||||||
|
if (!EnsureParentDirectory(filePath, true))
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"无法确保父目录,文件写入取消: {filePath}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//string directoryPath = System.IO.Path.GetDirectoryName(filePath.Replace(save_path, ""));
|
||||||
|
//string fullDirectoryPath = $"{save_path}{directoryPath}";
|
||||||
|
//UnityEngine.Debug.Log($"检查父目录: {fullDirectoryPath}");
|
||||||
|
|
||||||
|
//nn.fs.EntryType entryType = 0;
|
||||||
|
//result = nn.fs.FileSystem.GetEntryType(ref entryType, fullDirectoryPath);
|
||||||
|
//if (!result.IsSuccess() && nn.fs.FileSystem.ResultPathNotFound.Includes(result))
|
||||||
|
//{
|
||||||
|
// UnityEngine.Debug.Log($"父目录 {fullDirectoryPath} 不存在,尝试创建 (判断依据 result=>{result.ToString()})");
|
||||||
|
// result = nn.fs.Directory.Create(fullDirectoryPath);
|
||||||
|
// if (!result.IsSuccess())
|
||||||
|
// {
|
||||||
|
// UnityEngine.Debug.LogError($"创建父目录失败: {result.GetErrorInfo()}");
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
// UnityEngine.Debug.Log($"父目录 {fullDirectoryPath} 创建成功");
|
||||||
|
//}
|
||||||
|
//else if (result.IsSuccess() && entryType != nn.fs.EntryType.Directory)
|
||||||
|
//{
|
||||||
|
// UnityEngine.Debug.LogError($"路径 {fullDirectoryPath} 已存在,但不是目录");
|
||||||
|
// return false;
|
||||||
|
//}
|
||||||
|
//else if (!result.IsSuccess())
|
||||||
|
//{
|
||||||
|
// UnityEngine.Debug.LogError($"检查父目录失败: {result.GetErrorInfo()}");
|
||||||
|
// return false;
|
||||||
|
//}
|
||||||
|
|
||||||
|
if (CheckPathNotFound(filePath))
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.Log($"文件({filePath})不存在需要创建");
|
||||||
|
result = nn.fs.File.Create(filePath, data.Length); //this makes a file the size of your save journal. You may want to make a file smaller than this.
|
||||||
|
//result.abortUnlessSuccess();
|
||||||
|
if (!result.IsSuccess())
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"创建文件失败 {filePath} : " + result.GetErrorInfo());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
UnityEngine.Debug.Log($"文件({filePath})存在,不必创建");
|
||||||
|
|
||||||
|
result = File.Open(ref fileHandle, filePath, OpenFileMode.Write);
|
||||||
|
//result.abortUnlessSuccess();
|
||||||
|
if (!result.IsSuccess())
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"失败 File.Open(ref filehandle, {filePath}, OpenFileMode.Write): " + result.GetErrorInfo());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
UnityEngine.Debug.Log($"成功 File.Open(ref filehandle, {filePath}, OpenFileMode.Write)");
|
||||||
|
|
||||||
|
//nn.fs.WriteOption.Flush 应该就是覆盖写入
|
||||||
|
result = nn.fs.File.Write(fileHandle, 0, data, data.Length, nn.fs.WriteOption.Flush); // Writes and flushes the write at the same time
|
||||||
|
//result.abortUnlessSuccess();
|
||||||
|
if (!result.IsSuccess())
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError("写入文件失败: " + result.GetErrorInfo());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
UnityEngine.Debug.Log("写入文件成功: " + filePath);
|
||||||
|
|
||||||
|
nn.fs.File.Close(fileHandle);
|
||||||
|
|
||||||
|
//必须得提交,否则没有真实写入
|
||||||
|
result = FileSystem.Commit(save_name);
|
||||||
|
//result.abortUnlessSuccess();
|
||||||
|
if (!result.IsSuccess())
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"FileSystem.Commit({save_name}) 失败: " + result.GetErrorInfo());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
UnityEngine.Debug.Log($"FileSystem.Commit({save_name}) 成功: ");
|
||||||
|
|
||||||
|
|
||||||
|
#if UNITY_SWITCH && !UNITY_EDITOR
|
||||||
|
// 停止阻止用户退出游戏
|
||||||
|
UnityEngine.Switch.Notification.LeaveExitRequestHandlingSection();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return true;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 保存并创建文件(如果目录不存在回先自动创建目录)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="filePath"></param>
|
||||||
|
/// <param name="data"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public AxiNSWait_FileToSaveWithCreate FileToSaveWithCreateAsync(string filePath, byte[] data)
|
||||||
|
{
|
||||||
|
var wait = new AxiNSWait_FileToSaveWithCreate(filePath, data);
|
||||||
|
AxiNS.instance.wait.AddWait(wait);
|
||||||
|
return wait;
|
||||||
|
}
|
||||||
|
public byte[] LoadSwitchDataFile(string filename)
|
||||||
|
{
|
||||||
|
LoadSwitchDataFile(filename, out byte[] outputData);
|
||||||
|
return outputData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool LoadSwitchDataFile(string filename, ref System.IO.MemoryStream ms)
|
||||||
|
{
|
||||||
|
if (LoadSwitchDataFile(filename, out byte[] outputData))
|
||||||
|
{
|
||||||
|
using (System.IO.BinaryWriter writer = new System.IO.BinaryWriter(ms))
|
||||||
|
{
|
||||||
|
writer.Write(outputData);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
public bool LoadSwitchDataFile(string filename, out byte[] outputData)
|
||||||
|
{
|
||||||
|
#if !UNITY_SWITCH
|
||||||
|
outputData = null;
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
outputData = null;
|
||||||
|
if (!AxiNS.instance.mount.SaveIsMount)
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"Save 尚未挂载,无法读取 {filename}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (CheckPathNotFound(filename))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
nn.Result result;
|
||||||
|
result = nn.fs.File.Open(ref fileHandle, filename, nn.fs.OpenFileMode.Read);
|
||||||
|
if (result.IsSuccess() == false)
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"nn.fs.File.Open 失败 {filename} : result=>{result.GetErrorInfo()}");
|
||||||
|
return false; // Could not open file. This can be used to detect if this is the first time a user has launched your game.
|
||||||
|
// (However, be sure you are not getting this error due to your file being locked by another process, etc.)
|
||||||
|
}
|
||||||
|
UnityEngine.Debug.Log($"nn.fs.File.Open 成功 {filename}");
|
||||||
|
long iFileSize = 0;
|
||||||
|
result = nn.fs.File.GetSize(ref iFileSize, fileHandle);
|
||||||
|
if (result.IsSuccess() == false)
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"nn.fs.File.GetSize 失败 {filename} : result=>{result.GetErrorInfo()}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
UnityEngine.Debug.Log($"nn.fs.File.GetSize 成功 {filename},size=>{iFileSize}");
|
||||||
|
|
||||||
|
byte[] loadedData = new byte[iFileSize];
|
||||||
|
result = nn.fs.File.Read(fileHandle, 0, loadedData, iFileSize);
|
||||||
|
if (result.IsSuccess() == false)
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"nn.fs.File.Read 失败 {filename} : result=>{result.GetErrorInfo()}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
UnityEngine.Debug.Log($"nn.fs.File.Read 成功 {filename}");
|
||||||
|
|
||||||
|
nn.fs.File.Close(fileHandle);
|
||||||
|
|
||||||
|
//for (int i = 0; i < loadedData.Length; i++)
|
||||||
|
//{
|
||||||
|
// UnityEngine.Debug.Log($"data[{i}]:{loadedData[i]}");
|
||||||
|
//}
|
||||||
|
|
||||||
|
outputData = loadedData;
|
||||||
|
return true;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
public AxiNSWait_LoadSwitchDataFile LoadSwitchDataFileAsync(string filename)
|
||||||
|
{
|
||||||
|
var wait = new AxiNSWait_LoadSwitchDataFile(filename);
|
||||||
|
AxiNS.instance.wait.AddWait(wait);
|
||||||
|
return wait;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool GetDirectoryFiles(string path, out string[] entrys)
|
||||||
|
{
|
||||||
|
#if !UNITY_SWITCH
|
||||||
|
entrys = null;
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
return GetDirectoryEntrys(path,nn.fs.OpenDirectoryMode.File,out entrys);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool GetDirectoryDirs(string path, out string[] entrys)
|
||||||
|
{
|
||||||
|
#if !UNITY_SWITCH
|
||||||
|
entrys = null;
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
return GetDirectoryEntrys(path, nn.fs.OpenDirectoryMode.Directory, out entrys);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#if UNITY_SWITCH
|
||||||
|
public bool GetDirectoryEntrys(string path, nn.fs.OpenDirectoryMode type, out string[] entrys)
|
||||||
|
{
|
||||||
|
entrys = null;
|
||||||
|
return false;
|
||||||
|
nn.fs.DirectoryHandle dirHandle = new nn.fs.DirectoryHandle();
|
||||||
|
nn.Result result = nn.fs.Directory.Open(ref dirHandle, path, type);
|
||||||
|
if (nn.fs.FileSystem.ResultPathNotFound.Includes(result))
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.Log($"目录 {path} 不存在");
|
||||||
|
entrys = null;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
long entryCount = 0;
|
||||||
|
nn.fs.Directory.GetEntryCount(ref entryCount, dirHandle);
|
||||||
|
nn.fs.DirectoryEntry[] dirEntries = new nn.fs.DirectoryEntry[entryCount];
|
||||||
|
long actualEntries = 0;
|
||||||
|
nn.fs.Directory.Read(ref actualEntries, dirEntries, dirHandle, entryCount);
|
||||||
|
|
||||||
|
entrys = new string[actualEntries];
|
||||||
|
for (int i = 0; i < actualEntries; i++)
|
||||||
|
{
|
||||||
|
entrys[i] = dirEntries[i].name;
|
||||||
|
}
|
||||||
|
nn.fs.Directory.Close(dirHandle);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
public IEnumerable<string> EnumerateFiles(string path, string searchPattern)
|
||||||
|
{
|
||||||
|
#if !UNITY_SWITCH
|
||||||
|
yield break;
|
||||||
|
#else
|
||||||
|
// 将通配符转换为正则表达式(支持*和?)
|
||||||
|
var regexPattern = "^" +
|
||||||
|
Regex.Escape(searchPattern)
|
||||||
|
.Replace("\\*", ".*")
|
||||||
|
.Replace("\\?", ".")
|
||||||
|
+ "$";
|
||||||
|
|
||||||
|
var regex = new Regex(regexPattern, RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
|
if (!GetDirectoryEntrys(path, nn.fs.OpenDirectoryMode.File, out string[] entrys))
|
||||||
|
{
|
||||||
|
yield break;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < entrys.Length; i++)
|
||||||
|
{
|
||||||
|
if (regex.IsMatch(System.IO.Path.GetFileName(entrys[i])))
|
||||||
|
{
|
||||||
|
yield return entrys[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool DeletePathFile(string filename)
|
||||||
|
{
|
||||||
|
#if !UNITY_SWITCH
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
|
||||||
|
|
||||||
|
#if UNITY_SWITCH && !UNITY_EDITOR
|
||||||
|
// This next line prevents the user from quitting the game while saving.
|
||||||
|
// This is required for Nintendo Switch Guideline 0080
|
||||||
|
UnityEngine.Switch.Notification.EnterExitRequestHandlingSection();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (CheckPathNotFound(filename))
|
||||||
|
return false;
|
||||||
|
nn.Result result;
|
||||||
|
result = nn.fs.File.Delete(filename);
|
||||||
|
if (result.IsSuccess() == false)
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"nn.fs.File.Delete 失败 {filename} : result=>{result.GetErrorInfo()}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
result = nn.fs.FileSystem.Commit(save_name);
|
||||||
|
if (!result.IsSuccess())
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"FileSystem.Commit({save_name}) 失败: " + result.GetErrorInfo());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
|
||||||
|
#if UNITY_SWITCH && !UNITY_EDITOR
|
||||||
|
// End preventing the user from quitting the game while saving.
|
||||||
|
UnityEngine.Switch.Notification.LeaveExitRequestHandlingSection();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
public AxiNSWait_DeletePathFile DeletePathFileAsync(string filename)
|
||||||
|
{
|
||||||
|
var wait = new AxiNSWait_DeletePathFile(filename);
|
||||||
|
AxiNS.instance.wait.AddWait(wait);
|
||||||
|
return wait;
|
||||||
|
}
|
||||||
|
public bool DeletePathDir(string filename)
|
||||||
|
{
|
||||||
|
#if !UNITY_SWITCH
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
|
||||||
|
#if UNITY_SWITCH && !UNITY_EDITOR
|
||||||
|
// This next line prevents the user from quitting the game while saving.
|
||||||
|
// This is required for Nintendo Switch Guideline 0080
|
||||||
|
UnityEngine.Switch.Notification.EnterExitRequestHandlingSection();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (CheckPathNotFound(filename))
|
||||||
|
return false;
|
||||||
|
nn.Result result;
|
||||||
|
result = nn.fs.Directory.Delete(filename);
|
||||||
|
if (result.IsSuccess() == false)
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"nn.fs.File.Delete 失败 {filename} : result=>{result.GetErrorInfo()}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
result = nn.fs.FileSystem.Commit(save_name);
|
||||||
|
if (!result.IsSuccess())
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"FileSystem.Commit({save_name}) 失败: " + result.GetErrorInfo());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
|
||||||
|
#if UNITY_SWITCH && !UNITY_EDITOR
|
||||||
|
// End preventing the user from quitting the game while saving.
|
||||||
|
UnityEngine.Switch.Notification.LeaveExitRequestHandlingSection();
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
public AxiNSWait_DeletePathDir DeletePathDirAsync(string filename)
|
||||||
|
{
|
||||||
|
var wait = new AxiNSWait_DeletePathDir(filename);
|
||||||
|
AxiNS.instance.wait.AddWait(wait);
|
||||||
|
return wait;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 递归删除目录
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="filename"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool DeleteRecursivelyPathDir(string filename)
|
||||||
|
{
|
||||||
|
#if !UNITY_SWITCH
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
|
||||||
|
#if UNITY_SWITCH && !UNITY_EDITOR
|
||||||
|
// This next line prevents the user from quitting the game while saving.
|
||||||
|
// This is required for Nintendo Switch Guideline 0080
|
||||||
|
UnityEngine.Switch.Notification.EnterExitRequestHandlingSection();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (CheckPathNotFound(filename))
|
||||||
|
return false;
|
||||||
|
nn.Result result;
|
||||||
|
result = nn.fs.Directory.DeleteRecursively(filename);
|
||||||
|
if (result.IsSuccess() == false)
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"nn.fs.File.DeleteRecursively 失败 {filename} : result=>{result.GetErrorInfo()}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
result = nn.fs.FileSystem.Commit(save_name);
|
||||||
|
if (!result.IsSuccess())
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"FileSystem.Commit({save_name}) 失败: " + result.GetErrorInfo());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
|
||||||
|
#if UNITY_SWITCH && !UNITY_EDITOR
|
||||||
|
// End preventing the user from quitting the game while saving.
|
||||||
|
UnityEngine.Switch.Notification.LeaveExitRequestHandlingSection();
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 递归删除情况
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="filename"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool CleanRecursivelyPathDir(string filename)
|
||||||
|
{
|
||||||
|
#if !UNITY_SWITCH
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
|
||||||
|
#if UNITY_SWITCH && !UNITY_EDITOR
|
||||||
|
// This next line prevents the user from quitting the game while saving.
|
||||||
|
// This is required for Nintendo Switch Guideline 0080
|
||||||
|
UnityEngine.Switch.Notification.EnterExitRequestHandlingSection();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (CheckPathNotFound(filename))
|
||||||
|
return false;
|
||||||
|
nn.Result result;
|
||||||
|
result = nn.fs.Directory.CleanRecursively(filename);
|
||||||
|
if (result.IsSuccess() == false)
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"nn.fs.File.DeleteRecursively 失败 {filename} : result=>{result.GetErrorInfo()}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
result = nn.fs.FileSystem.Commit(save_name);
|
||||||
|
if (!result.IsSuccess())
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"FileSystem.Commit({save_name}) 失败: " + result.GetErrorInfo());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
|
||||||
|
#if UNITY_SWITCH && !UNITY_EDITOR
|
||||||
|
// End preventing the user from quitting the game while saving.
|
||||||
|
UnityEngine.Switch.Notification.LeaveExitRequestHandlingSection();
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool RenameDir(string oldpath, string newpath)
|
||||||
|
{
|
||||||
|
#if !UNITY_SWITCH
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
|
||||||
|
#if UNITY_SWITCH && !UNITY_EDITOR
|
||||||
|
// This next line prevents the user from quitting the game while saving.
|
||||||
|
// This is required for Nintendo Switch Guideline 0080
|
||||||
|
UnityEngine.Switch.Notification.EnterExitRequestHandlingSection();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (CheckPathNotFound(oldpath))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
nn.Result result;
|
||||||
|
result = nn.fs.Directory.Rename(oldpath, newpath);
|
||||||
|
if (result.IsSuccess() == false)
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"nn.fs.File.Rename 失败 {oldpath} to {newpath} : result=>{result.GetErrorInfo()}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
result = nn.fs.FileSystem.Commit(save_name);
|
||||||
|
if (!result.IsSuccess())
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"FileSystem.Commit({save_name}) 失败: " + result.GetErrorInfo());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
|
||||||
|
#if UNITY_SWITCH && !UNITY_EDITOR
|
||||||
|
// End preventing the user from quitting the game while saving.
|
||||||
|
UnityEngine.Switch.Notification.LeaveExitRequestHandlingSection();
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
bool EnsureParentDirectory(string filePath, bool bAutoCreateDir = true)
|
||||||
|
{
|
||||||
|
#if !UNITY_SWITCH
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
// 参数校验
|
||||||
|
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); // 获取父目录相对路径
|
||||||
|
if (string.IsNullOrEmpty(directoryPath))
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.Log($"文件路径 {filePath} 无需创建父目录(位于根目录)");
|
||||||
|
return true; // 根目录无需创建
|
||||||
|
}
|
||||||
|
|
||||||
|
string fullDirectoryPath = $"{pathPrefix}{directoryPath}"; // 拼接完整父目录路径
|
||||||
|
UnityEngine.Debug.Log($"检查父目录: {fullDirectoryPath}");
|
||||||
|
|
||||||
|
// 检查路径是否存在及其类型
|
||||||
|
nn.fs.EntryType entryType = 0;
|
||||||
|
nn.Result result = nn.fs.FileSystem.GetEntryType(ref entryType, fullDirectoryPath);
|
||||||
|
if (!result.IsSuccess() && nn.fs.FileSystem.ResultPathNotFound.Includes(result))
|
||||||
|
{
|
||||||
|
if (bAutoCreateDir)
|
||||||
|
{
|
||||||
|
// 路径不存在,尝试创建
|
||||||
|
UnityEngine.Debug.Log($"父目录 {fullDirectoryPath} 不存在,尝试创建 (判断依据 result=>{result.ToString()})");
|
||||||
|
result = nn.fs.Directory.Create(fullDirectoryPath);
|
||||||
|
if (!result.IsSuccess())
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"创建父目录失败: {result.GetErrorInfo()}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
UnityEngine.Debug.Log($"父目录 {fullDirectoryPath} 创建成功");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (result.IsSuccess() && entryType != nn.fs.EntryType.Directory)
|
||||||
|
{
|
||||||
|
// 路径存在,但不是目录
|
||||||
|
UnityEngine.Debug.LogError($"路径 {fullDirectoryPath} 已存在,但不是目录");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (!result.IsSuccess())
|
||||||
|
{
|
||||||
|
// 其他错误
|
||||||
|
UnityEngine.Debug.LogError($"检查父目录失败: {result.GetErrorInfo()}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// 路径存在且是目录
|
||||||
|
UnityEngine.Debug.Log($"父目录 {fullDirectoryPath} 已存在且有效");
|
||||||
|
return true;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 检查指定挂载点是否可访问
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pathPrefix">路径前缀,例如 "save:/" 或 "sd:/"</param>
|
||||||
|
/// <returns>挂载点是否可访问</returns>
|
||||||
|
bool IsMountPointAccessible(string pathPrefix)
|
||||||
|
{
|
||||||
|
#if !UNITY_SWITCH
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
if (string.IsNullOrEmpty(pathPrefix))
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"无效挂载点: {pathPrefix}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据前缀判断挂载点类型并检查挂载状态
|
||||||
|
if (pathPrefix == $"{save_name}:/")
|
||||||
|
{
|
||||||
|
if (!AxiNS.instance.mount.SaveIsMount)
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"{save_name}:/ 未挂载");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (pathPrefix == "sd:/")
|
||||||
|
{
|
||||||
|
long freeSpace = 0;
|
||||||
|
// 检查 SD 卡挂载状态(示例,需根据实际实现调整)
|
||||||
|
nn.Result result = nn.fs.FileSystem.GetFreeSpaceSize(ref freeSpace, "sd:/");
|
||||||
|
if (!result.IsSuccess())
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"sd:/ 未挂载或无法访问: {result.GetErrorInfo()}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogWarning($"未知挂载点 {pathPrefix},假定已挂载");
|
||||||
|
return true; // 其他挂载点需根据实际需求实现
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Script/AxiNSApi/AxiNSIO.cs.meta
Normal file
11
Assets/Script/AxiNSApi/AxiNSIO.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d910a015a6b6561418bdff7f2c48cffa
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
134
Assets/Script/AxiNSApi/AxiNSMount.cs
Normal file
134
Assets/Script/AxiNSApi/AxiNSMount.cs
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
#if UNITY_SWITCH
|
||||||
|
using nn.account;
|
||||||
|
#endif
|
||||||
|
public class AxiNSMount
|
||||||
|
{
|
||||||
|
static bool bInMount = false;
|
||||||
|
internal static string m_SaveMountName;
|
||||||
|
static bool bInSdCardMount = false;
|
||||||
|
internal static string m_SdCardMountName;
|
||||||
|
static bool bInSdCardDebugMount = false;
|
||||||
|
internal static string m_SdCardDebugMountName;
|
||||||
|
|
||||||
|
public bool SaveIsMount => bInMount;
|
||||||
|
public string SaveMountName
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (!bInMount)
|
||||||
|
return string.Empty;
|
||||||
|
else
|
||||||
|
return m_SaveMountName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#if UNITY_SWITCH
|
||||||
|
public bool MountSave(Uid userId, string mountName = "save")
|
||||||
|
{
|
||||||
|
if (bInMount)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (!nn.fs.SaveData.IsExisting(userId))
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"{userId.ToString()}存档不存在!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
UnityEngine.Debug.Log($"{userId.ToString()}存档确保存在!");
|
||||||
|
|
||||||
|
nn.Result result;
|
||||||
|
result = nn.fs.SaveData.Mount(mountName, userId);
|
||||||
|
//result.abortUnlessSuccess();
|
||||||
|
|
||||||
|
if (!result.IsSuccess())
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"MountSave->挂载{mountName}:/ 失败: " + result.ToString());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
UnityEngine.Debug.Log($"MountSave->挂载{mountName}:/ 成功 ");
|
||||||
|
m_SaveMountName = mountName;
|
||||||
|
bInMount = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
public bool MountSDForDebug(string mountName = "dbgsd")
|
||||||
|
{
|
||||||
|
#if !UNITY_SWITCH
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
if (bInSdCardDebugMount)
|
||||||
|
return true;
|
||||||
|
nn.Result result;
|
||||||
|
result = nn.fs.SdCard.MountForDebug(mountName);
|
||||||
|
//result.abortUnlessSuccess();
|
||||||
|
if (!result.IsSuccess())
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"nn_fs_MountSdCardForDebug->挂载{mountName}:/ 失败: " + result.ToString());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
UnityEngine.Debug.Log($"nn_fs_MountSdCardForDebug->挂载{mountName}:/ 成功 ");
|
||||||
|
m_SdCardDebugMountName = mountName;
|
||||||
|
bInSdCardDebugMount = true;
|
||||||
|
return true;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
public bool MountSD(string mountName = "sd")
|
||||||
|
{
|
||||||
|
#if !UNITY_SWITCH
|
||||||
|
return false;
|
||||||
|
#else
|
||||||
|
if (bInSdCardMount)
|
||||||
|
return true;
|
||||||
|
nn.Result result;
|
||||||
|
result = AxiNSSDCard.Mount(mountName);
|
||||||
|
if (!result.IsSuccess())
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"nn_fs_MountSdCard->挂载{mountName}:/ 失败: " + result.ToString());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
UnityEngine.Debug.Log($"nn_fs_MountSdCard->挂载{mountName}:/ 成功 ");
|
||||||
|
m_SdCardMountName = mountName;
|
||||||
|
bInSdCardMount = true;
|
||||||
|
return true;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
public void UnmountSave()
|
||||||
|
{
|
||||||
|
#if UNITY_SWITCH
|
||||||
|
if (!bInMount)
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"{m_SaveMountName}:/ 没有被挂载,无需卸载");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
nn.fs.FileSystem.Unmount(m_SaveMountName);
|
||||||
|
UnityEngine.Debug.LogError($"UnmountSaveForDebufa->已卸载{m_SaveMountName}:/ ");
|
||||||
|
bInMount = false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
public void UnmountSDCardForDebug()
|
||||||
|
{
|
||||||
|
#if UNITY_SWITCH
|
||||||
|
if (!bInSdCardDebugMount)
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"{m_SdCardDebugMountName}:/ 没有被挂载,无需卸载");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
nn.fs.FileSystem.Unmount(m_SdCardDebugMountName);
|
||||||
|
UnityEngine.Debug.LogError($"UnmountSDCardForDebug->已卸载{m_SdCardDebugMountName}:/ ");
|
||||||
|
bInSdCardDebugMount = false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
public void UnmountSDCard()
|
||||||
|
{
|
||||||
|
#if UNITY_SWITCH
|
||||||
|
if (!bInSdCardMount)
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"{m_SdCardMountName}:/ 没有被挂载,无需卸载");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
nn.fs.FileSystem.Unmount(m_SdCardMountName);
|
||||||
|
UnityEngine.Debug.LogError($"UnmountSDCard->已卸载{m_SdCardMountName}:/ ");
|
||||||
|
bInSdCardMount = false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Script/AxiNSApi/AxiNSMount.cs.meta
Normal file
11
Assets/Script/AxiNSApi/AxiNSMount.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 48826c5dc8959ff4db8c6a51b6568bb7
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
23
Assets/Script/AxiNSApi/AxiNSSDCard.cs
Normal file
23
Assets/Script/AxiNSApi/AxiNSSDCard.cs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#if UNITY_SWITCH
|
||||||
|
using nn.account;
|
||||||
|
#endif
|
||||||
|
public class AxiNSSDCard
|
||||||
|
{
|
||||||
|
#if UNITY_SWITCH
|
||||||
|
|
||||||
|
#if DEVELOPMENT_BUILD || NN_FS_SD_CARD_FOR_DEBUG_ENABLE
|
||||||
|
[DllImport(Nn.DllName,
|
||||||
|
CallingConvention = CallingConvention.Cdecl,
|
||||||
|
EntryPoint = "nn_fs_MountSdCard")]
|
||||||
|
public static extern nn.Result Mount(string name);
|
||||||
|
#else
|
||||||
|
|
||||||
|
public static nn.Result Mount(string name)
|
||||||
|
{
|
||||||
|
return new nn.Result();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
}
|
||||||
11
Assets/Script/AxiNSApi/AxiNSSDCard.cs.meta
Normal file
11
Assets/Script/AxiNSApi/AxiNSSDCard.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 21fa04ba4da10d74aafd65dd138478b7
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
106
Assets/Script/AxiNSApi/AxiNSUser.cs
Normal file
106
Assets/Script/AxiNSApi/AxiNSUser.cs
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
#if UNITY_SWITCH
|
||||||
|
using nn.account;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
public class AxiNSUser
|
||||||
|
{
|
||||||
|
bool m_bInit = false;
|
||||||
|
bool m_bGotOpenPreselectedUser = false;
|
||||||
|
|
||||||
|
#if UNITY_SWITCH
|
||||||
|
Uid m_UserId;
|
||||||
|
nn.account.UserHandle mUserHandle;
|
||||||
|
nn.account.Nickname m_NickName;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#region 对外公开接口,确保内部安全处理,避免崩溃
|
||||||
|
|
||||||
|
#if UNITY_SWITCH
|
||||||
|
public bool GetUserID(out Uid uid)
|
||||||
|
{
|
||||||
|
InitPreselectedUserInfo();
|
||||||
|
if (!m_bGotOpenPreselectedUser)
|
||||||
|
{
|
||||||
|
uid = Uid.Invalid;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
uid = m_UserId;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
public bool GetNickName(out string NickName)
|
||||||
|
{
|
||||||
|
#if !UNITY_SWITCH
|
||||||
|
NickName = "";
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
InitPreselectedUserInfo();
|
||||||
|
if (!m_bGotOpenPreselectedUser)
|
||||||
|
{
|
||||||
|
NickName = string.Empty;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
NickName = m_NickName.ToString();
|
||||||
|
return true;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
/// <summary>
|
||||||
|
/// 初始化Account模块儿
|
||||||
|
/// </summary>
|
||||||
|
void InitNSAccount()
|
||||||
|
{
|
||||||
|
#if UNITY_SWITCH
|
||||||
|
if (m_bInit)
|
||||||
|
return;
|
||||||
|
//必须先初始化NS的Account 不然调用即崩
|
||||||
|
nn.account.Account.Initialize();
|
||||||
|
m_bInit = true;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取预选用户
|
||||||
|
/// </summary>
|
||||||
|
void InitPreselectedUserInfo()
|
||||||
|
{
|
||||||
|
#if UNITY_SWITCH
|
||||||
|
if (m_bGotOpenPreselectedUser)
|
||||||
|
return;
|
||||||
|
|
||||||
|
InitNSAccount();
|
||||||
|
nn.Result result;
|
||||||
|
mUserHandle = new nn.account.UserHandle();
|
||||||
|
if (!nn.account.Account.TryOpenPreselectedUser(ref mUserHandle))
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError("打开预选的用户失败.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
UnityEngine.Debug.Log("打开预选用户成功.");
|
||||||
|
result = nn.account.Account.GetUserId(ref m_UserId, mUserHandle);
|
||||||
|
//result.abortUnlessSuccess();
|
||||||
|
if (!result.IsSuccess())
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"GetUserId失败: {result.ToString()}");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_UserId == Uid.Invalid)
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError("无法获取用户 ID");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
UnityEngine.Debug.Log($"获取用户 ID:{m_UserId.ToString()}");
|
||||||
|
|
||||||
|
result = nn.account.Account.GetNickname(ref m_NickName, m_UserId);
|
||||||
|
//result.abortUnlessSuccess();
|
||||||
|
if (!result.IsSuccess())
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"GetNickname失败: {result.ToString()}");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
UnityEngine.Debug.Log($"获取用户 NickName ID:{m_NickName.ToString()}");
|
||||||
|
m_bGotOpenPreselectedUser = true;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Script/AxiNSApi/AxiNSUser.cs.meta
Normal file
11
Assets/Script/AxiNSApi/AxiNSUser.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 95c2e164c69c6cc4887a194d6eba0cc2
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/Script/AxiNSApi/AxiNSWaitHandle.meta
Normal file
8
Assets/Script/AxiNSApi/AxiNSWaitHandle.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e28ed9d2fb16c7f42b28cafb6a2ce0ac
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
119
Assets/Script/AxiNSApi/AxiNSWaitHandle/AxiNSWaitHandle.Data.cs
Normal file
119
Assets/Script/AxiNSApi/AxiNSWaitHandle/AxiNSWaitHandle.Data.cs
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
public abstract class AxiNSWaitBase : UnityEngine.CustomYieldInstruction
|
||||||
|
{
|
||||||
|
protected bool IsDone;
|
||||||
|
public abstract void Invoke();
|
||||||
|
public string errmsg = string.Empty;
|
||||||
|
public AxiNSWaitBase()
|
||||||
|
{
|
||||||
|
this.IsDone = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetDone()
|
||||||
|
{
|
||||||
|
this.IsDone = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
~AxiNSWaitBase()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool keepWaiting
|
||||||
|
{
|
||||||
|
get { return !IsDone; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public struct S_NSWAIT_PathWithBytes
|
||||||
|
{
|
||||||
|
public string filePath;
|
||||||
|
public byte[] data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AxiNSWait_FileToSaveWithCreate : AxiNSWaitBase
|
||||||
|
{
|
||||||
|
S_NSWAIT_PathWithBytes req;
|
||||||
|
public bool result;
|
||||||
|
public AxiNSWait_FileToSaveWithCreate(string filePath, byte[] data)
|
||||||
|
{
|
||||||
|
req = new S_NSWAIT_PathWithBytes() { filePath = filePath, data = data };
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Invoke()
|
||||||
|
{
|
||||||
|
result = AxiNS.instance.io.FileToSaveWithCreate(req.filePath, req.data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public struct S_NSWAIT_PathWithMS
|
||||||
|
{
|
||||||
|
public string filePath;
|
||||||
|
public System.IO.MemoryStream ms;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AxiNSWait_FileToSaveByMSWithCreate : AxiNSWaitBase
|
||||||
|
{
|
||||||
|
S_NSWAIT_PathWithMS req;
|
||||||
|
public bool result;
|
||||||
|
public AxiNSWait_FileToSaveByMSWithCreate(string filePath, System.IO.MemoryStream ms)
|
||||||
|
{
|
||||||
|
req = new S_NSWAIT_PathWithMS() { filePath = filePath, ms = ms };
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Invoke()
|
||||||
|
{
|
||||||
|
result = AxiNS.instance.io.FileToSaveWithCreate(req.filePath, req.ms);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public struct S_NSWAIT_Path
|
||||||
|
{
|
||||||
|
public string filePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AxiNSWait_LoadSwitchDataFile : AxiNSWaitBase
|
||||||
|
{
|
||||||
|
S_NSWAIT_Path req;
|
||||||
|
public bool result;
|
||||||
|
public byte[] outputData;
|
||||||
|
public AxiNSWait_LoadSwitchDataFile(string filePath)
|
||||||
|
{
|
||||||
|
req = new S_NSWAIT_Path() { filePath = filePath};
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Invoke()
|
||||||
|
{
|
||||||
|
result = AxiNS.instance.io.LoadSwitchDataFile(req.filePath, out outputData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AxiNSWait_DeletePathFile : AxiNSWaitBase
|
||||||
|
{
|
||||||
|
S_NSWAIT_Path req;
|
||||||
|
public bool result;
|
||||||
|
public AxiNSWait_DeletePathFile(string filePath)
|
||||||
|
{
|
||||||
|
req = new S_NSWAIT_Path() { filePath = filePath };
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Invoke()
|
||||||
|
{
|
||||||
|
result = AxiNS.instance.io.DeletePathFile(req.filePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AxiNSWait_DeletePathDir : AxiNSWaitBase
|
||||||
|
{
|
||||||
|
S_NSWAIT_Path req;
|
||||||
|
public bool result;
|
||||||
|
public AxiNSWait_DeletePathDir(string filePath)
|
||||||
|
{
|
||||||
|
req = new S_NSWAIT_Path() { filePath = filePath };
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Invoke()
|
||||||
|
{
|
||||||
|
result = AxiNS.instance.io.DeletePathDir(req.filePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 46a1a776d2f9dba49b9641d8e0976861
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
56
Assets/Script/AxiNSApi/AxiNSWaitHandle/AxiNSWaitHandle.cs
Normal file
56
Assets/Script/AxiNSApi/AxiNSWaitHandle/AxiNSWaitHandle.cs
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
|
public class AxiNSWaitHandle
|
||||||
|
{
|
||||||
|
static AutoResetEvent autoEvent = new AutoResetEvent(false);
|
||||||
|
static Thread waitThread = new Thread(Loop);
|
||||||
|
static bool bSingleInit = false;
|
||||||
|
static Queue<AxiNSWaitBase> m_QueueReady = new Queue<AxiNSWaitBase>();
|
||||||
|
static Queue<AxiNSWaitBase> m_QueueWork = new Queue<AxiNSWaitBase>();
|
||||||
|
public void AddWait(AxiNSWaitBase wait)
|
||||||
|
{
|
||||||
|
InitInternalThread();
|
||||||
|
lock (m_QueueReady)
|
||||||
|
{
|
||||||
|
m_QueueReady.Enqueue(wait);
|
||||||
|
}
|
||||||
|
autoEvent.Set();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void InitInternalThread()
|
||||||
|
{
|
||||||
|
if (bSingleInit) return;
|
||||||
|
waitThread.Start();
|
||||||
|
bSingleInit = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Loop()
|
||||||
|
{
|
||||||
|
while (autoEvent.WaitOne())
|
||||||
|
{
|
||||||
|
lock (m_QueueReady)
|
||||||
|
{
|
||||||
|
while (m_QueueReady.Count > 0)
|
||||||
|
{
|
||||||
|
m_QueueWork.Enqueue(m_QueueReady.Dequeue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while (m_QueueWork.Count > 0)
|
||||||
|
{
|
||||||
|
AxiNSWaitBase wait = m_QueueWork.Dequeue();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
wait.Invoke();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
wait.errmsg = ex.ToString();
|
||||||
|
UnityEngine.Debug.Log(ex.ToString());
|
||||||
|
}
|
||||||
|
wait.SetDone();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5e36180ba1c4a8f4db3ceed533a43999
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
436
Assets/Script/Debugger.cs
Normal file
436
Assets/Script/Debugger.cs
Normal file
@ -0,0 +1,436 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System;
|
||||||
|
using UnityEngine.Profiling;
|
||||||
|
|
||||||
|
public class Debugger : MonoBehaviour
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 是否允许调试
|
||||||
|
/// </summary>
|
||||||
|
public bool AllowDebugging = true;
|
||||||
|
|
||||||
|
private DebugType _debugType = DebugType.Console;
|
||||||
|
private List<LogData> _logInformations = new List<LogData>();
|
||||||
|
private int _currentLogIndex = -1;
|
||||||
|
private int _infoLogCount = 0;
|
||||||
|
private int _warningLogCount = 0;
|
||||||
|
private int _errorLogCount = 0;
|
||||||
|
private int _fatalLogCount = 0;
|
||||||
|
private bool _showInfoLog = true;
|
||||||
|
private bool _showWarningLog = true;
|
||||||
|
private bool _showErrorLog = true;
|
||||||
|
private bool _showFatalLog = true;
|
||||||
|
private Vector2 _scrollLogView = Vector2.zero;
|
||||||
|
private Vector2 _scrollCurrentLogView = Vector2.zero;
|
||||||
|
private Vector2 _scrollSystemView = Vector2.zero;
|
||||||
|
private bool _expansion = false;
|
||||||
|
private Rect _windowRect = new Rect(0, 0, 100, 60);
|
||||||
|
|
||||||
|
private int _fps = 0;
|
||||||
|
private Color _fpsColor = Color.white;
|
||||||
|
private int _frameNumber = 0;
|
||||||
|
private float _lastShowFPSTime = 0f;
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
DontDestroyOnLoad(this.gameObject);
|
||||||
|
if (AllowDebugging)
|
||||||
|
{
|
||||||
|
Application.logMessageReceived += LogHandler;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
if (AllowDebugging)
|
||||||
|
{
|
||||||
|
_frameNumber += 1;
|
||||||
|
float time = Time.realtimeSinceStartup - _lastShowFPSTime;
|
||||||
|
if (time >= 1)
|
||||||
|
{
|
||||||
|
_fps = (int)(_frameNumber / time);
|
||||||
|
_frameNumber = 0;
|
||||||
|
_lastShowFPSTime = Time.realtimeSinceStartup;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void OnDestory()
|
||||||
|
{
|
||||||
|
if (AllowDebugging)
|
||||||
|
{
|
||||||
|
Application.logMessageReceived -= LogHandler;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool bUnityWaterFrist = false;
|
||||||
|
private void LogHandler(string condition, string stackTrace, LogType type)
|
||||||
|
{
|
||||||
|
if (condition.Contains("UnityWater") || stackTrace.Contains("UnityWater"))
|
||||||
|
{
|
||||||
|
if(bUnityWaterFrist)
|
||||||
|
return;
|
||||||
|
|
||||||
|
bUnityWaterFrist = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
LogData log = new LogData();
|
||||||
|
log.time = DateTime.Now.ToString("HH:mm:ss");
|
||||||
|
log.message = condition;
|
||||||
|
log.stackTrace = stackTrace;
|
||||||
|
|
||||||
|
if (type == LogType.Assert)
|
||||||
|
{
|
||||||
|
log.type = "Fatal";
|
||||||
|
_fatalLogCount += 1;
|
||||||
|
}
|
||||||
|
else if (type == LogType.Exception || type == LogType.Error)
|
||||||
|
{
|
||||||
|
log.type = "Error";
|
||||||
|
_errorLogCount += 1;
|
||||||
|
}
|
||||||
|
else if (type == LogType.Warning)
|
||||||
|
{
|
||||||
|
log.type = "Warning";
|
||||||
|
_warningLogCount += 1;
|
||||||
|
}
|
||||||
|
else if (type == LogType.Log)
|
||||||
|
{
|
||||||
|
log.type = "Info";
|
||||||
|
_infoLogCount += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
_logInformations.Add(log);
|
||||||
|
|
||||||
|
if (_warningLogCount > 0)
|
||||||
|
{
|
||||||
|
_fpsColor = Color.yellow;
|
||||||
|
}
|
||||||
|
if (_errorLogCount > 0)
|
||||||
|
{
|
||||||
|
_fpsColor = Color.red;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnGUI()
|
||||||
|
{
|
||||||
|
if (AllowDebugging)
|
||||||
|
{
|
||||||
|
if (_expansion)
|
||||||
|
{
|
||||||
|
_windowRect = GUI.Window(0, _windowRect, ExpansionGUIWindow, "DEBUGGER");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_windowRect = GUI.Window(0, _windowRect, ShrinkGUIWindow, "DEBUGGER");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void ExpansionGUIWindow(int windowId)
|
||||||
|
{
|
||||||
|
GUI.DragWindow(new Rect(0, 0, 10000, 20));
|
||||||
|
|
||||||
|
#region title
|
||||||
|
GUILayout.BeginHorizontal();
|
||||||
|
GUI.contentColor = _fpsColor;
|
||||||
|
if (GUILayout.Button("FPS:" + _fps, GUILayout.Height(30)))
|
||||||
|
{
|
||||||
|
_expansion = false;
|
||||||
|
_windowRect.width = 100;
|
||||||
|
_windowRect.height = 60;
|
||||||
|
}
|
||||||
|
GUI.contentColor = (_debugType == DebugType.Console ? Color.white : Color.gray);
|
||||||
|
if (GUILayout.Button("Console", GUILayout.Height(30)))
|
||||||
|
{
|
||||||
|
_debugType = DebugType.Console;
|
||||||
|
}
|
||||||
|
GUI.contentColor = (_debugType == DebugType.Memory ? Color.white : Color.gray);
|
||||||
|
if (GUILayout.Button("Memory", GUILayout.Height(30)))
|
||||||
|
{
|
||||||
|
_debugType = DebugType.Memory;
|
||||||
|
}
|
||||||
|
GUI.contentColor = (_debugType == DebugType.System ? Color.white : Color.gray);
|
||||||
|
if (GUILayout.Button("System", GUILayout.Height(30)))
|
||||||
|
{
|
||||||
|
_debugType = DebugType.System;
|
||||||
|
}
|
||||||
|
GUI.contentColor = (_debugType == DebugType.Screen ? Color.white : Color.gray);
|
||||||
|
if (GUILayout.Button("Screen", GUILayout.Height(30)))
|
||||||
|
{
|
||||||
|
_debugType = DebugType.Screen;
|
||||||
|
}
|
||||||
|
GUI.contentColor = (_debugType == DebugType.Quality ? Color.white : Color.gray);
|
||||||
|
if (GUILayout.Button("Quality", GUILayout.Height(30)))
|
||||||
|
{
|
||||||
|
_debugType = DebugType.Quality;
|
||||||
|
}
|
||||||
|
GUI.contentColor = (_debugType == DebugType.Environment ? Color.white : Color.gray);
|
||||||
|
if (GUILayout.Button("Environment", GUILayout.Height(30)))
|
||||||
|
{
|
||||||
|
_debugType = DebugType.Environment;
|
||||||
|
}
|
||||||
|
GUI.contentColor = Color.white;
|
||||||
|
GUILayout.EndHorizontal();
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region console
|
||||||
|
if (_debugType == DebugType.Console)
|
||||||
|
{
|
||||||
|
GUILayout.BeginHorizontal();
|
||||||
|
if (GUILayout.Button("Clear"))
|
||||||
|
{
|
||||||
|
_logInformations.Clear();
|
||||||
|
_fatalLogCount = 0;
|
||||||
|
_warningLogCount = 0;
|
||||||
|
_errorLogCount = 0;
|
||||||
|
_infoLogCount = 0;
|
||||||
|
_currentLogIndex = -1;
|
||||||
|
_fpsColor = Color.white;
|
||||||
|
}
|
||||||
|
GUI.contentColor = (_showInfoLog ? Color.white : Color.gray);
|
||||||
|
_showInfoLog = GUILayout.Toggle(_showInfoLog, "Info [" + _infoLogCount + "]");
|
||||||
|
GUI.contentColor = (_showWarningLog ? Color.white : Color.gray);
|
||||||
|
_showWarningLog = GUILayout.Toggle(_showWarningLog, "Warning [" + _warningLogCount + "]");
|
||||||
|
GUI.contentColor = (_showErrorLog ? Color.white : Color.gray);
|
||||||
|
_showErrorLog = GUILayout.Toggle(_showErrorLog, "Error [" + _errorLogCount + "]");
|
||||||
|
GUI.contentColor = (_showFatalLog ? Color.white : Color.gray);
|
||||||
|
_showFatalLog = GUILayout.Toggle(_showFatalLog, "Fatal [" + _fatalLogCount + "]");
|
||||||
|
GUI.contentColor = Color.white;
|
||||||
|
GUILayout.EndHorizontal();
|
||||||
|
|
||||||
|
_scrollLogView = GUILayout.BeginScrollView(_scrollLogView, "Box", GUILayout.Height(165));
|
||||||
|
for (int i = 0; i < _logInformations.Count; i++)
|
||||||
|
{
|
||||||
|
bool show = false;
|
||||||
|
Color color = Color.white;
|
||||||
|
switch (_logInformations[i].type)
|
||||||
|
{
|
||||||
|
case "Fatal":
|
||||||
|
show = _showFatalLog;
|
||||||
|
color = Color.red;
|
||||||
|
break;
|
||||||
|
case "Error":
|
||||||
|
show = _showErrorLog;
|
||||||
|
color = Color.red;
|
||||||
|
break;
|
||||||
|
case "Info":
|
||||||
|
show = _showInfoLog;
|
||||||
|
color = Color.white;
|
||||||
|
break;
|
||||||
|
case "Warning":
|
||||||
|
show = _showWarningLog;
|
||||||
|
color = Color.yellow;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (show)
|
||||||
|
{
|
||||||
|
GUILayout.BeginHorizontal();
|
||||||
|
if (GUILayout.Toggle(_currentLogIndex == i, ""))
|
||||||
|
{
|
||||||
|
_currentLogIndex = i;
|
||||||
|
}
|
||||||
|
GUI.contentColor = color;
|
||||||
|
GUILayout.Label("[" + _logInformations[i].type + "] ");
|
||||||
|
GUILayout.Label("[" + _logInformations[i].time + "] ");
|
||||||
|
GUILayout.Label(_logInformations[i].message);
|
||||||
|
GUILayout.FlexibleSpace();
|
||||||
|
GUI.contentColor = Color.white;
|
||||||
|
GUILayout.EndHorizontal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
GUILayout.EndScrollView();
|
||||||
|
|
||||||
|
_scrollCurrentLogView = GUILayout.BeginScrollView(_scrollCurrentLogView, "Box", GUILayout.Height(100));
|
||||||
|
if (_currentLogIndex != -1)
|
||||||
|
{
|
||||||
|
GUILayout.Label(_logInformations[_currentLogIndex].message + "\r\n\r\n" + _logInformations[_currentLogIndex].stackTrace);
|
||||||
|
}
|
||||||
|
GUILayout.EndScrollView();
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region memory
|
||||||
|
else if (_debugType == DebugType.Memory)
|
||||||
|
{
|
||||||
|
GUILayout.BeginHorizontal();
|
||||||
|
GUILayout.Label("Memory Information");
|
||||||
|
GUILayout.EndHorizontal();
|
||||||
|
|
||||||
|
GUILayout.BeginVertical("Box");
|
||||||
|
#if UNITY_5
|
||||||
|
GUILayout.Label("总内存:" + Profiler.GetTotalReservedMemory() / 1000000 + "MB");
|
||||||
|
GUILayout.Label("已占用内存:" + Profiler.GetTotalAllocatedMemory() / 1000000 + "MB");
|
||||||
|
GUILayout.Label("空闲中内存:" + Profiler.GetTotalUnusedReservedMemory() / 1000000 + "MB");
|
||||||
|
GUILayout.Label("总Mono堆内存:" + Profiler.GetMonoHeapSize() / 1000000 + "MB");
|
||||||
|
GUILayout.Label("已占用Mono堆内存:" + Profiler.GetMonoUsedSize() / 1000000 + "MB");
|
||||||
|
#endif
|
||||||
|
#if UNITY_7
|
||||||
|
GUILayout.Label("总内存:" + Profiler.GetTotalReservedMemoryLong() / 1000000 + "MB");
|
||||||
|
GUILayout.Label("已占用内存:" + Profiler.GetTotalAllocatedMemoryLong() / 1000000 + "MB");
|
||||||
|
GUILayout.Label("空闲中内存:" + Profiler.GetTotalUnusedReservedMemoryLong() / 1000000 + "MB");
|
||||||
|
GUILayout.Label("总Mono堆内存:" + Profiler.GetMonoHeapSizeLong() / 1000000 + "MB");
|
||||||
|
GUILayout.Label("已占用Mono堆内存:" + Profiler.GetMonoUsedSizeLong() / 1000000 + "MB");
|
||||||
|
#endif
|
||||||
|
GUILayout.EndVertical();
|
||||||
|
|
||||||
|
GUILayout.BeginHorizontal();
|
||||||
|
if (GUILayout.Button("卸载未使用的资源"))
|
||||||
|
{
|
||||||
|
Resources.UnloadUnusedAssets();
|
||||||
|
}
|
||||||
|
GUILayout.EndHorizontal();
|
||||||
|
|
||||||
|
GUILayout.BeginHorizontal();
|
||||||
|
if (GUILayout.Button("使用GC垃圾回收"))
|
||||||
|
{
|
||||||
|
GC.Collect();
|
||||||
|
}
|
||||||
|
GUILayout.EndHorizontal();
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region system
|
||||||
|
else if (_debugType == DebugType.System)
|
||||||
|
{
|
||||||
|
GUILayout.BeginHorizontal();
|
||||||
|
GUILayout.Label("System Information");
|
||||||
|
GUILayout.EndHorizontal();
|
||||||
|
|
||||||
|
_scrollSystemView = GUILayout.BeginScrollView(_scrollSystemView, "Box");
|
||||||
|
GUILayout.Label("操作系统:" + SystemInfo.operatingSystem);
|
||||||
|
GUILayout.Label("系统内存:" + SystemInfo.systemMemorySize + "MB");
|
||||||
|
GUILayout.Label("处理器:" + SystemInfo.processorType);
|
||||||
|
GUILayout.Label("处理器数量:" + SystemInfo.processorCount);
|
||||||
|
GUILayout.Label("显卡:" + SystemInfo.graphicsDeviceName);
|
||||||
|
GUILayout.Label("显卡类型:" + SystemInfo.graphicsDeviceType);
|
||||||
|
GUILayout.Label("显存:" + SystemInfo.graphicsMemorySize + "MB");
|
||||||
|
GUILayout.Label("显卡标识:" + SystemInfo.graphicsDeviceID);
|
||||||
|
GUILayout.Label("显卡供应商:" + SystemInfo.graphicsDeviceVendor);
|
||||||
|
GUILayout.Label("显卡供应商标识码:" + SystemInfo.graphicsDeviceVendorID);
|
||||||
|
GUILayout.Label("设备模式:" + SystemInfo.deviceModel);
|
||||||
|
GUILayout.Label("设备名称:" + SystemInfo.deviceName);
|
||||||
|
GUILayout.Label("设备类型:" + SystemInfo.deviceType);
|
||||||
|
GUILayout.Label("设备标识:" + SystemInfo.deviceUniqueIdentifier);
|
||||||
|
GUILayout.EndScrollView();
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region screen
|
||||||
|
else if (_debugType == DebugType.Screen)
|
||||||
|
{
|
||||||
|
GUILayout.BeginHorizontal();
|
||||||
|
GUILayout.Label("Screen Information");
|
||||||
|
GUILayout.EndHorizontal();
|
||||||
|
|
||||||
|
GUILayout.BeginVertical("Box");
|
||||||
|
GUILayout.Label("DPI:" + Screen.dpi);
|
||||||
|
GUILayout.Label("分辨率:" + Screen.currentResolution.ToString());
|
||||||
|
GUILayout.EndVertical();
|
||||||
|
|
||||||
|
GUILayout.BeginHorizontal();
|
||||||
|
if (GUILayout.Button("全屏"))
|
||||||
|
{
|
||||||
|
Screen.SetResolution(Screen.currentResolution.width, Screen.currentResolution.height, !Screen.fullScreen);
|
||||||
|
}
|
||||||
|
GUILayout.EndHorizontal();
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Quality
|
||||||
|
else if (_debugType == DebugType.Quality)
|
||||||
|
{
|
||||||
|
GUILayout.BeginHorizontal();
|
||||||
|
GUILayout.Label("Quality Information");
|
||||||
|
GUILayout.EndHorizontal();
|
||||||
|
|
||||||
|
GUILayout.BeginVertical("Box");
|
||||||
|
string value = "";
|
||||||
|
if (QualitySettings.GetQualityLevel() == 0)
|
||||||
|
{
|
||||||
|
value = " [最低]";
|
||||||
|
}
|
||||||
|
else if (QualitySettings.GetQualityLevel() == QualitySettings.names.Length - 1)
|
||||||
|
{
|
||||||
|
value = " [最高]";
|
||||||
|
}
|
||||||
|
|
||||||
|
GUILayout.Label("图形质量:" + QualitySettings.names[QualitySettings.GetQualityLevel()] + value);
|
||||||
|
GUILayout.EndVertical();
|
||||||
|
|
||||||
|
GUILayout.BeginHorizontal();
|
||||||
|
if (GUILayout.Button("降低一级图形质量"))
|
||||||
|
{
|
||||||
|
QualitySettings.DecreaseLevel();
|
||||||
|
}
|
||||||
|
GUILayout.EndHorizontal();
|
||||||
|
|
||||||
|
GUILayout.BeginHorizontal();
|
||||||
|
if (GUILayout.Button("提升一级图形质量"))
|
||||||
|
{
|
||||||
|
QualitySettings.IncreaseLevel();
|
||||||
|
}
|
||||||
|
GUILayout.EndHorizontal();
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Environment
|
||||||
|
else if (_debugType == DebugType.Environment)
|
||||||
|
{
|
||||||
|
GUILayout.BeginHorizontal();
|
||||||
|
GUILayout.Label("Environment Information");
|
||||||
|
GUILayout.EndHorizontal();
|
||||||
|
|
||||||
|
GUILayout.BeginVertical("Box");
|
||||||
|
GUILayout.Label("项目名称:" + Application.productName);
|
||||||
|
#if UNITY_5
|
||||||
|
GUILayout.Label("项目ID:" + Application.bundleIdentifier);
|
||||||
|
#endif
|
||||||
|
#if UNITY_7
|
||||||
|
GUILayout.Label("项目ID:" + Application.identifier);
|
||||||
|
#endif
|
||||||
|
GUILayout.Label("项目版本:" + Application.version);
|
||||||
|
GUILayout.Label("Unity版本:" + Application.unityVersion);
|
||||||
|
GUILayout.Label("公司名称:" + Application.companyName);
|
||||||
|
GUILayout.EndVertical();
|
||||||
|
|
||||||
|
GUILayout.BeginHorizontal();
|
||||||
|
if (GUILayout.Button("退出程序"))
|
||||||
|
{
|
||||||
|
Application.Quit();
|
||||||
|
}
|
||||||
|
GUILayout.EndHorizontal();
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
private void ShrinkGUIWindow(int windowId)
|
||||||
|
{
|
||||||
|
GUI.DragWindow(new Rect(0, 0, 10000, 20));
|
||||||
|
|
||||||
|
GUI.contentColor = _fpsColor;
|
||||||
|
if (GUILayout.Button("FPS:" + _fps, GUILayout.Width(80), GUILayout.Height(30)))
|
||||||
|
{
|
||||||
|
_expansion = true;
|
||||||
|
_windowRect.width = 600;
|
||||||
|
_windowRect.height = 360;
|
||||||
|
}
|
||||||
|
GUI.contentColor = Color.white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public struct LogData
|
||||||
|
{
|
||||||
|
public string time;
|
||||||
|
public string type;
|
||||||
|
public string message;
|
||||||
|
public string stackTrace;
|
||||||
|
}
|
||||||
|
public enum DebugType
|
||||||
|
{
|
||||||
|
Console,
|
||||||
|
Memory,
|
||||||
|
System,
|
||||||
|
Screen,
|
||||||
|
Quality,
|
||||||
|
Environment
|
||||||
|
}
|
||||||
11
Assets/Script/Debugger.cs.meta
Normal file
11
Assets/Script/Debugger.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c89ab6bcea65e1d4dab81b2dc35458f5
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
684
Assets/Script/MainTest.cs
Normal file
684
Assets/Script/MainTest.cs
Normal file
@ -0,0 +1,684 @@
|
|||||||
|
//using nn.account;
|
||||||
|
using nn.account;
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.IO;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.Sockets;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.Networking;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
using static AxiHttp;
|
||||||
|
|
||||||
|
public class MainTest : MonoBehaviour
|
||||||
|
{
|
||||||
|
public Button btn1; public Text text1;
|
||||||
|
public Button btn2; public Text text2;
|
||||||
|
public Button btn3; public Text text3;
|
||||||
|
public Button btn4; public Text text4;
|
||||||
|
|
||||||
|
public Button btn5; public Text text5;
|
||||||
|
public Button btn6; public Text text6;
|
||||||
|
public Button btn7; public Text text7;
|
||||||
|
public Button btn8; public Text text8;
|
||||||
|
|
||||||
|
|
||||||
|
public Button btn9; public Text text9;
|
||||||
|
public Button btn10; public Text text10;
|
||||||
|
public Button btn11; public Text text11;
|
||||||
|
public Button btn12; public Text text12;
|
||||||
|
|
||||||
|
public Button btn13; public Text text13;
|
||||||
|
public Button btn14; public Text text14;
|
||||||
|
public Button btn15; public Text text15;
|
||||||
|
public Button btn16; public Text text16;
|
||||||
|
public Button btn17; public Text text17;
|
||||||
|
public Button btn18; public Text text18;
|
||||||
|
public Button btn19; public Text text19;
|
||||||
|
public Button btn20; public Text text20;
|
||||||
|
public Button btn21; public Text text21;
|
||||||
|
|
||||||
|
public Button btnHttpTest;
|
||||||
|
public Button tcpTest;
|
||||||
|
public Button btnNetLibTest;
|
||||||
|
public Button btnNewDownloadTest;
|
||||||
|
public Button btnNewDownloadTestAsync;
|
||||||
|
public Button btnDNS;
|
||||||
|
public Button btnKeyboard;
|
||||||
|
|
||||||
|
//public string dataPath => Application.dataPath;
|
||||||
|
//public string streamingAssetsPath => Application.streamingAssetsPath;
|
||||||
|
public string temporaryCachePath => Application.temporaryCachePath;
|
||||||
|
//public string persistentDataPath => Application.persistentDataPath;
|
||||||
|
public string dataAxibugPath => "sd:/Axibug";
|
||||||
|
public string dataAxibugPath_save => "save:/Axibug";
|
||||||
|
public string dataAxibugPath_sdmc => "sd:/Axibug";
|
||||||
|
|
||||||
|
public string persistentDataPath = "";
|
||||||
|
public string testfile => "/axibugtest.txt";
|
||||||
|
public string testdir => "/axibugtestdir";
|
||||||
|
|
||||||
|
void Start()
|
||||||
|
{
|
||||||
|
//string a = Application.persistentDataPath;
|
||||||
|
//Debug.Log($"persistentDataPath -> {a}");
|
||||||
|
|
||||||
|
text1.text = $"scan->persistentDataPath";
|
||||||
|
btn1.onClick.AddListener(() =>
|
||||||
|
{
|
||||||
|
string a = Application.persistentDataPath;
|
||||||
|
Debug.Log($"persistentDataPath -> {a}");
|
||||||
|
});
|
||||||
|
|
||||||
|
text2.text = $"scan->Application.dataPath";
|
||||||
|
btn2.onClick.AddListener(() =>
|
||||||
|
{
|
||||||
|
string a = Application.dataPath;
|
||||||
|
Debug.Log($"Application.dataPath -> {a}");
|
||||||
|
});
|
||||||
|
|
||||||
|
text3.text = $"scan->Application.streamingAssetsPath";
|
||||||
|
btn3.onClick.AddListener(() =>
|
||||||
|
{
|
||||||
|
string a = Application.streamingAssetsPath;
|
||||||
|
Debug.Log($"Application.streamingAssetsPath -> {a}");
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
text4.text = $"scan->Application.temporaryCachePath";
|
||||||
|
btn4.onClick.AddListener(() =>
|
||||||
|
{
|
||||||
|
string a = Application.temporaryCachePath;
|
||||||
|
Debug.Log($"Application.temporaryCachePath -> {a}");
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
//btn1.onClick.AddListener(() => TraverseDirectory(dataPath)); text1.text = $"scan->{dataPath}";
|
||||||
|
//btn2.onClick.AddListener(() => TraverseDirectory(streamingAssetsPath)); text2.text = $"scan->{streamingAssetsPath}";
|
||||||
|
//btn3.onClick.AddListener(() => TraverseDirectory(temporaryCachePath)); text3.text = $"scan->{temporaryCachePath}";
|
||||||
|
//btn4.onClick.AddListener(() => NP_SaveToFile_save()); text4.text = $"try->NP_SaveToFile_save";
|
||||||
|
|
||||||
|
btn5.onClick.AddListener(() => AxiNS.instance.Init()); text5.text = $"AxiNS->Init";
|
||||||
|
btn6.onClick.AddListener(() => AxiNS.instance.mount.MountSDForDebug()); text6.text = $"AxiNS->MountForDebug";
|
||||||
|
btn7.onClick.AddListener(() => AxiNS.instance.mount.MountSD()); text7.text = $"AxiNS->MountSD";
|
||||||
|
//btn7.onClick.AddListener(() => AxiNS.instance.user.GetUserID(out var _)); text7.text = $"AxiNS.instance.user.GetUserID";
|
||||||
|
//btn5.onClick.AddListener(()
|
||||||
|
//=> CreateFile(dataPath)); text5.text = $"createfile->{dataPath}";
|
||||||
|
//btn6.onClick.AddListener(() => CreateFile(streamingAssetsPath)); text6.text = $"createfile->{streamingAssetsPath}";
|
||||||
|
//btn7.onClick.AddListener(() => CreateFile(temporaryCachePath)); text7.text = $"createfile->{temporaryCachePath}";
|
||||||
|
//btn8.onClick.AddListener(() => CreateFile(dataAxibugPath)); text8.text = $"createfile->{dataAxibugPath}";
|
||||||
|
|
||||||
|
//btn9.onClick.AddListener(() => NS_CreateFile(dataAxibugPath)); text9.text = $"NS_CreateFile->{dataAxibugPath}";
|
||||||
|
//btn10.onClick.AddListener(() => NS_CreateDir(dataAxibugPath)); text10.text = $"NS_CreateDir->{dataAxibugPath}";
|
||||||
|
|
||||||
|
btn8.onClick.AddListener(() => NS_CreateDir(dataAxibugPath_save)); text8.text = $"NS_CreateDir->{dataAxibugPath_save}";
|
||||||
|
btn9.onClick.AddListener(() => NS_CreateFile(dataAxibugPath_save)); text9.text = $"NS_CreateFile->{dataAxibugPath_save}";
|
||||||
|
|
||||||
|
btn10.onClick.AddListener(() => NS_CreateDir(dataAxibugPath_sdmc)); text10.text = $"NS_CreateDir->{dataAxibugPath_sdmc}";
|
||||||
|
btn11.onClick.AddListener(() => NS_CreateFile(dataAxibugPath_sdmc)); text11.text = $"NS_CreateFile->{dataAxibugPath_sdmc}";
|
||||||
|
|
||||||
|
btn12.onClick.AddListener(() => AxiNS.instance.io.FileToSaveWithCreate("save:/axibug.txt", new byte[] { 1, 2, 3, 4 })); text12.text = $"AxiNS.instance.io.SaveFile({"save:/axibug.txt"}";
|
||||||
|
btn13.onClick.AddListener(() => AxiNS.instance.io.FileToSaveWithCreate("save:/axibug/axibug.txt", new byte[] { 1, 2, 3, 4 })); text13.text = $"AxiNS.instance.io.SaveFile({"save:/axibug/axibug.txt"}";
|
||||||
|
btn14.onClick.AddListener(() => AxiNS.instance.io.LoadSwitchDataFile("save:/axibug/axibug.txt", out var _)); text14.text = $"AxiNS.instance.io.LoadSwitchDataFile({"save:/axibug/axibug.txt"}";
|
||||||
|
btn15.onClick.AddListener(() => AxiNS.instance.io.FileToSaveWithCreate("sd:/axibug.txt", new byte[] { 1, 2, 3, 4 })); text15.text = $"AxiNS.instance.io.SaveFile({"sd:/axibug.txt"}";
|
||||||
|
btn16.onClick.AddListener(() => AxiNS.instance.io.FileToSaveWithCreate("save:/axibug/bigfile.txt", new byte[1024 * 1024 * 32])); text16.text = $"AxiNS.instance.io.SaveFile({"save:/axibug/bigfile.txt"}";
|
||||||
|
btn17.onClick.AddListener(() =>
|
||||||
|
{
|
||||||
|
bool result = AxiNS.instance.io.GetDirectoryEntrys("save:/",nn.fs.OpenDirectoryMode.All, out var elist);
|
||||||
|
if (!result)
|
||||||
|
UnityEngine.Debug.Log($"result =>{result}");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
foreach (var e in elist)
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.Log($"result =>{result}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
); text17.text = $"AxiNS.instance.io.GetDirectoryEntrys({"save:/"},nn.fs.OpenDirectoryMode.All,out var elist)";
|
||||||
|
|
||||||
|
btn18.onClick.AddListener(() =>
|
||||||
|
{
|
||||||
|
bool result = AxiNS.instance.io.GetDirectoryEntrys("save:/axibug", nn.fs.OpenDirectoryMode.All, out var elist);
|
||||||
|
if (!result)
|
||||||
|
UnityEngine.Debug.Log($"result =>{result}");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
foreach (var e in elist)
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.Log($"result =>{result}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
); text18.text = $"AxiNS.instance.io.GetDirectoryEntrys({"save:/axibug"},nn.fs.OpenDirectoryMode.All,out var elist)";
|
||||||
|
|
||||||
|
btn19.onClick.AddListener(() =>
|
||||||
|
{
|
||||||
|
bool result = AxiNS.instance.io.GetDirectoryEntrys("save:/axibug/", nn.fs.OpenDirectoryMode.All, out var elist);
|
||||||
|
if (!result)
|
||||||
|
UnityEngine.Debug.Log($"result =>{result}");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
foreach (var e in elist)
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.Log($"result =>{result}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
); text19.text = $"AxiNS.instance.io.GetDirectoryEntrys({"save:/axibug/"},nn.fs.OpenDirectoryMode.All,out var elist)";
|
||||||
|
|
||||||
|
btn20.onClick.AddListener(() =>
|
||||||
|
{
|
||||||
|
bool result = AxiNS.instance.io.GetDirectoryDirs("save:/", out var elist);
|
||||||
|
if (!result)
|
||||||
|
UnityEngine.Debug.Log($"result =>{result}");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
foreach (var e in elist)
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.Log($"result =>{result}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
); text20.text = $"AxiNS.instance.io.GetDirectoryDirs({"save:/"},out var elist)";
|
||||||
|
|
||||||
|
btn21.onClick.AddListener(() =>
|
||||||
|
{
|
||||||
|
bool result = AxiNS.instance.io.GetDirectoryFiles("save:/", out var elist);
|
||||||
|
if (!result)
|
||||||
|
UnityEngine.Debug.Log($"result =>{result}");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
foreach (var e in elist)
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.Log($"result =>{result}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
); text21.text = $"AxiNS.instance.io.GetDirectoryFiles({"save:/"},out var elist)";
|
||||||
|
|
||||||
|
|
||||||
|
//btn11.onClick.AddListener(() => CreateDir(temporaryCachePath)); text11.text = $"CreateDir->{temporaryCachePath}";
|
||||||
|
//btn12.onClick.AddListener(() => CreateDir(dataAxibugPath)); text12.text = $"CreateDir->{dataAxibugPath}";
|
||||||
|
btnKeyboard?.onClick.AddListener(TestKeyBoard);
|
||||||
|
|
||||||
|
btnHttpTest.onClick.AddListener(() => { StartCoroutine(HttpTest()); });
|
||||||
|
tcpTest.onClick.AddListener(() => TCPTest());
|
||||||
|
btnNetLibTest?.onClick.AddListener(NetLibTest);
|
||||||
|
btnNewDownloadTest.onClick.AddListener(() => NewHttpDownLoadTest());
|
||||||
|
btnNewDownloadTestAsync.onClick.AddListener(() => { StartCoroutine(NewHttpDownLoadTestAsync()); });
|
||||||
|
btnDNS.onClick.AddListener(DNSTest);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private nn.fs.FileHandle fileHandle = new nn.fs.FileHandle();
|
||||||
|
void NS_CreateFile(string path)
|
||||||
|
{
|
||||||
|
string topath = path + testfile;
|
||||||
|
|
||||||
|
nn.Result result = nn.fs.File.Create(topath, 1);
|
||||||
|
//result.abortUnlessSuccess();
|
||||||
|
if (!result.IsSuccess())
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"失败: =>nn.fs.File.Create({topath}, 1) ,result=>{result.GetErrorInfo()}");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
UnityEngine.Debug.Log($"成功: =>nn.fs.File.Create({topath}, 1)");
|
||||||
|
}
|
||||||
|
void NS_CreateDir(string path)
|
||||||
|
{
|
||||||
|
var result = nn.fs.Directory.Create(path);
|
||||||
|
//result.abortUnlessSuccess();
|
||||||
|
if (!result.IsSuccess())
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.LogError($"失败: =>nn.fs.Directory({path}), result=>{result.GetErrorInfo()}");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
UnityEngine.Debug.Log($"成功: =>nn.fs.Directory({path})");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Uid userId; // user ID for the user account on the Nintendo Switch
|
||||||
|
|
||||||
|
|
||||||
|
//private static Uid GetCurrentUserId()
|
||||||
|
//{
|
||||||
|
// Uid pOut = default;
|
||||||
|
// UserHandle handle = new UserHandle();
|
||||||
|
// nn.Result result = nn.account.Account.GetUserId(ref pOut, handle);
|
||||||
|
// if (!result.IsSuccess())
|
||||||
|
// {
|
||||||
|
// throw new Exception("GetCurrentUserId -> result.IsSuccess() == false");
|
||||||
|
// }
|
||||||
|
// return pOut;
|
||||||
|
//}
|
||||||
|
// Update is called once per frame
|
||||||
|
void Update()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void TraverseDirectory(string folderPath)
|
||||||
|
{
|
||||||
|
Debug.Log($"Scan ->" + folderPath);
|
||||||
|
// 检查路径是否存在
|
||||||
|
if (!System.IO.Directory.Exists(folderPath))
|
||||||
|
{
|
||||||
|
Debug.Log($"{folderPath}");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 遍历文件夹
|
||||||
|
DirectoryInfo directoryInfo = new DirectoryInfo(folderPath);
|
||||||
|
FileSystemInfo[] fileSystemInfos = directoryInfo.GetFileSystemInfos();
|
||||||
|
|
||||||
|
foreach (FileSystemInfo fileSystemInfo in fileSystemInfos)
|
||||||
|
{
|
||||||
|
if (fileSystemInfo is DirectoryInfo)
|
||||||
|
{
|
||||||
|
// 递归遍历子文件夹
|
||||||
|
DirectoryInfo subDirectoryInfo = (DirectoryInfo)fileSystemInfo;
|
||||||
|
TraverseDirectory(subDirectoryInfo.FullName);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 处理文件
|
||||||
|
FileInfo fileInfo = (FileInfo)fileSystemInfo;
|
||||||
|
Debug.Log(fileInfo.FullName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CreateDir(string folderPath)
|
||||||
|
{
|
||||||
|
string topath = folderPath + testdir;
|
||||||
|
Debug.Log($"CreateDir->{topath}");
|
||||||
|
Debug.Log($"Directory.Exists->{System.IO.Directory.Exists(topath)}");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
System.IO.Directory.CreateDirectory(topath);
|
||||||
|
Debug.Log($"CreateDir OK!->{topath}");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Debug.Log($"CreateDir Cant!->{topath} {ex.ToString()}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CreateFile(string folderPath)
|
||||||
|
{
|
||||||
|
string topath = folderPath + testfile;
|
||||||
|
Debug.Log($"CreateFile->{topath}");
|
||||||
|
Debug.Log($"File.Exists->{System.IO.File.Exists(topath)}");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
System.IO.File.WriteAllText(topath, "axibugtest12345");
|
||||||
|
Debug.Log($"WriteAllText OK!->{topath}");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Debug.Log($"WriteAllText Cant!->{topath} {ex.ToString()}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReadFile(string folderPath)
|
||||||
|
{
|
||||||
|
string topath = folderPath + testfile;
|
||||||
|
Debug.Log($"ReadFile->{topath}");
|
||||||
|
Debug.Log($"File.Exists->{System.IO.File.Exists(topath)}");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Debug.Log($"ReadFile OK!->{System.IO.File.ReadAllText(topath)}");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Debug.Log($"ReadFile Cant!->{topath} {ex.ToString()}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
IEnumerator HttpTest()
|
||||||
|
{
|
||||||
|
UnityWebRequestAsyncOperation reqaasync = null;
|
||||||
|
UnityWebRequest req = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
req = UnityWebRequest.Get("http://emu.axibug.com/api/CheckStandInfo?platform=1&version=1.0.0.0");
|
||||||
|
reqaasync = req.SendWebRequest();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Debug.Log($"req err->{ex.ToString()}");
|
||||||
|
}
|
||||||
|
yield return reqaasync;
|
||||||
|
Debug.Log($"req.responseCode->{req.responseCode}");
|
||||||
|
Debug.Log($"req.downloadHandler.text->{req.downloadHandler.text}");
|
||||||
|
}
|
||||||
|
|
||||||
|
async void HttpCSharpTest()
|
||||||
|
{
|
||||||
|
//var client = new HttpClient();
|
||||||
|
//{
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// // 指定要请求的URL
|
||||||
|
// string url = "http://emu.axibug.com/api/CheckStandInfo?platform=1&version=1.0.0.0";
|
||||||
|
|
||||||
|
// Debug.Log($"HttpCSharpTest->{url}");
|
||||||
|
// // 发送GET请求
|
||||||
|
// HttpResponseMessage response = await client.GetAsync(url);
|
||||||
|
|
||||||
|
// // 确保HTTP成功状态值
|
||||||
|
// response.EnsureSuccessStatusCode();
|
||||||
|
|
||||||
|
// // 读取响应内容
|
||||||
|
// string responseBody = await response.Content.ReadAsStringAsync();
|
||||||
|
// Debug.Log($"responseBody->{responseBody}");
|
||||||
|
// }
|
||||||
|
// catch (HttpRequestException e)
|
||||||
|
// {
|
||||||
|
// Debug.Log($"\nException Caught!");
|
||||||
|
// Debug.Log($"Message :{e.Message.ToString()} ");
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
async void HttpCSharpTest2()
|
||||||
|
{
|
||||||
|
//WebRequest web = WebRequest.Create(@"http://emu.axibug.com/api/CheckStandInfo?platform=1&version=1.0.0.0");//声明WebRequest对象
|
||||||
|
//MessageBox.Show("ContentLength请求数据的内容长度:" + web.ContentLength);
|
||||||
|
//MessageBox.Show("ContentType内容类型:" + web.ContentType);
|
||||||
|
//MessageBox.Show("Credentials网络凭证:" + web.Credentials);
|
||||||
|
//MessageBox.Show("Method协议方法:" + web.Method);
|
||||||
|
//MessageBox.Show("RequestUri:" + web.RequestUri);
|
||||||
|
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri("http://139.186.160.243/api/CheckStandInfo?platform=1&version=1.0.0.0"));
|
||||||
|
try
|
||||||
|
{
|
||||||
|
WebResponse response = await request.GetResponseAsync();
|
||||||
|
using (var stream = response.GetResponseStream())
|
||||||
|
using (var reader = new System.IO.StreamReader(stream))
|
||||||
|
{
|
||||||
|
string content = await reader.ReadToEndAsync();
|
||||||
|
Debug.Log($"返回Body->{content}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (WebException ex)
|
||||||
|
{
|
||||||
|
// 处理网络异常
|
||||||
|
Debug.Log($"An error occurred: {ex.Message}");
|
||||||
|
if (ex.Response != null)
|
||||||
|
{
|
||||||
|
// 读取错误响应(如404、500等HTTP状态码)
|
||||||
|
using (var errorStream = ex.Response.GetResponseStream())
|
||||||
|
using (var reader = new System.IO.StreamReader(errorStream))
|
||||||
|
{
|
||||||
|
string errorContent = await reader.ReadToEndAsync();
|
||||||
|
Debug.Log($"Error content: {errorContent}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async void DNSTest()
|
||||||
|
{
|
||||||
|
Debug.Log($"DNSTest");
|
||||||
|
Debug.Log($"strIPRet->{AxiHttp.GetDnsIP("emu.axibug.com").ToString()}");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void NewHttpTest()
|
||||||
|
{
|
||||||
|
AxiRespInfo respInfo = AxiHttp.AxiRequest("http://emu.axibug.com/api/CheckStandInfo?platform=1&version=1.0.0.0");
|
||||||
|
ShowAxiRespInfo(respInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
IEnumerator NewHttpTestAsync()
|
||||||
|
{
|
||||||
|
WaitAxiRequest waitAsync = AxiRequestAsync("http://emu.axibug.com/api/CheckStandInfo?platform=1&version=1.0.0.0");
|
||||||
|
yield return waitAsync;
|
||||||
|
AxiRespInfo respInfo = waitAsync.mReqAsync;
|
||||||
|
ShowAxiRespInfo(respInfo);
|
||||||
|
}
|
||||||
|
void NewHttpDownLoadTest()
|
||||||
|
{
|
||||||
|
AxiRespInfo respInfo = AxiHttp.AxiDownload("http://emu.axibug.com/images/fcrom/Downtown%20-%20Nekketsu%20Monogatari%20(J).JPG");
|
||||||
|
ShowAxiRespInfo(respInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
IEnumerator NewHttpDownLoadTestAsync()
|
||||||
|
{
|
||||||
|
Debug.Log($"==== NewHttpDownLoadTestAsync 1 ====");
|
||||||
|
AxiRespInfo respInfo = AxiHttp.AxiDownloadAsync("http://emu.axibug.com/FileZilla_Server-cn-0_9_60_2.exe");
|
||||||
|
Debug.Log($"==== NewHttpDownLoadTestAsync 2 ====");
|
||||||
|
while (!respInfo.isDone)
|
||||||
|
{
|
||||||
|
//yield return new WaitForSeconds(0.3f);
|
||||||
|
yield return null;
|
||||||
|
Debug.Log($"下载进度:{respInfo.DownLoadPr} ->{respInfo.loadedLenght}/{respInfo.NeedloadedLenght}");
|
||||||
|
}
|
||||||
|
ShowAxiRespInfo(respInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShowAxiRespInfo(AxiRespInfo respInfo)
|
||||||
|
{
|
||||||
|
Debug.Log($"");
|
||||||
|
Debug.Log($"==== request ====");
|
||||||
|
Debug.Log($"url =>{respInfo.url}");
|
||||||
|
Debug.Log($"Raw =>{respInfo.requestRaw}");
|
||||||
|
Debug.Log($"code =>{respInfo.code}");
|
||||||
|
Debug.Log($"respInfo.bTimeOut =>{respInfo.bTimeOut}");
|
||||||
|
Debug.Log($"");
|
||||||
|
Debug.Log($"==== response ====");
|
||||||
|
Debug.Log($"==== header ====");
|
||||||
|
Debug.Log($"header =>{respInfo.header}");
|
||||||
|
Debug.Log($"HeadersCount =>{respInfo.headers.Count}");
|
||||||
|
foreach (var kv in respInfo.headers)
|
||||||
|
Debug.Log($"{kv.Key} => {kv.Value}");
|
||||||
|
Debug.Log($"");
|
||||||
|
Debug.Log($"==== body ====");
|
||||||
|
Debug.Log($"body_text =>{respInfo.body}");
|
||||||
|
Debug.Log($"body_text.Length =>{respInfo.body.Length}");
|
||||||
|
Debug.Log($"bodyRaw.Length =>{respInfo.bodyRaw?.Length}");
|
||||||
|
Debug.Log($"");
|
||||||
|
Debug.Log($"==== download ====");
|
||||||
|
Debug.Log($"downloadMode =>{respInfo.downloadMode}");
|
||||||
|
Debug.Log($"respInfo.fileName =>{respInfo.fileName}");
|
||||||
|
Debug.Log($"respInfo.NeedloadedLenght =>{respInfo.NeedloadedLenght}");
|
||||||
|
Debug.Log($"respInfo.loadedLenght =>{respInfo.loadedLenght}");
|
||||||
|
if (respInfo.downloadMode == AxiDownLoadMode.DownLoadBytes)
|
||||||
|
{
|
||||||
|
if (respInfo.bTimeOut)
|
||||||
|
{
|
||||||
|
Debug.Log($"DownLoad Timeout!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
string downloadSavePath;
|
||||||
|
if (Application.platform == RuntimePlatform.PSP2)
|
||||||
|
{
|
||||||
|
downloadSavePath = dataAxibugPath + "/" + respInfo.fileName;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
downloadSavePath = persistentDataPath + "/" + respInfo.fileName;
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
System.IO.File.WriteAllBytes(downloadSavePath, respInfo.bodyRaw);
|
||||||
|
Debug.Log($"DownLoad OK");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Debug.Log($"DownLoad Err {ex.ToString()}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void NetLibTest()
|
||||||
|
{
|
||||||
|
Init("main.axibug.com", 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public bool Init(string IP, int port, bool isHadDetailedLog = true, bool bBindReuseAddress = false, int bBindport = 0)
|
||||||
|
{
|
||||||
|
Debug.Log("==>1");
|
||||||
|
|
||||||
|
//bDetailedLog = isHadDetailedLog;
|
||||||
|
//RevIndex = MaxRevIndexNum;
|
||||||
|
//SendIndex = MaxSendIndexNum;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//Socket client;
|
||||||
|
//client = new Socket(SocketType.Stream, ProtocolType.Tcp);
|
||||||
|
|
||||||
|
Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||||
|
Debug.Log("==>2");
|
||||||
|
if (bBindReuseAddress)
|
||||||
|
{
|
||||||
|
Debug.Log("==>2_1");
|
||||||
|
client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
|
||||||
|
Debug.Log("==>2_2");
|
||||||
|
IPEndPoint ipe = new IPEndPoint(IPAddress.Any, Convert.ToInt32(bBindport));
|
||||||
|
Debug.Log("==>2_3");
|
||||||
|
client.Bind(ipe);
|
||||||
|
Debug.Log("==>2_4");
|
||||||
|
}
|
||||||
|
Debug.Log("==>3");
|
||||||
|
//LastConnectIP = IP;
|
||||||
|
//LastConnectPort = port;
|
||||||
|
return Connect(client, IP, port);
|
||||||
|
}
|
||||||
|
bool Connect(Socket client, string IP, int port)
|
||||||
|
{
|
||||||
|
Debug.Log("Connect==>1");
|
||||||
|
//带回调的
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Debug.Log("连接到远程IP " + IP + ":" + port);
|
||||||
|
|
||||||
|
client.Connect(IP, port);
|
||||||
|
Debug.Log("Connect==>2 OK");
|
||||||
|
//Thread thread = new Thread(Recive);
|
||||||
|
//thread.IsBackground = true;
|
||||||
|
//thread.Start(client);
|
||||||
|
int localport = ((IPEndPoint)client.LocalEndPoint).Port;
|
||||||
|
|
||||||
|
Debug.Log("Connect==>3");
|
||||||
|
//Debug.Log("Connect==>3 OK");
|
||||||
|
//if (bDetailedLog)
|
||||||
|
// LogOut($"连接成功!连接到远程IP->{IP}:{port} | 本地端口->{localport}");
|
||||||
|
//else
|
||||||
|
// LogOut("连接成功!");
|
||||||
|
|
||||||
|
//if (_heartTimer == null)
|
||||||
|
//{
|
||||||
|
// _heartTimer = new System.Timers.Timer();
|
||||||
|
//}
|
||||||
|
//_heartTimer.Interval = TimerInterval;
|
||||||
|
//_heartTimer.Elapsed += CheckUpdatetimer_Elapsed;
|
||||||
|
//_heartTimer.AutoReset = true;
|
||||||
|
//_heartTimer.Enabled = true;
|
||||||
|
|
||||||
|
//if (bDetailedLog)
|
||||||
|
// LogOut("开启心跳包检测");
|
||||||
|
|
||||||
|
//OnConnected?.Invoke(true);
|
||||||
|
|
||||||
|
client.Close();
|
||||||
|
Debug.Log("Connect==>close");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
//if (bDetailedLog)
|
||||||
|
// LogOut("连接失败:" + ex.ToString());
|
||||||
|
//else
|
||||||
|
// LogOut("连接失败");
|
||||||
|
|
||||||
|
//OnConnected?.Invoke(false);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* string url = "http://emu.axibug.com/api/CheckStandInfo?platform=1&version=1.0.0.0";
|
||||||
|
|
||||||
|
string strURI = url;
|
||||||
|
string strHost = "";
|
||||||
|
string strIP = "";
|
||||||
|
string strPort = "";
|
||||||
|
string strRelativePath = "";
|
||||||
|
bool bSSL = false;
|
||||||
|
bool foward_302 = true;
|
||||||
|
|
||||||
|
if (!OnlySocketHttp.OnlySocketHttp.ParseURI(strURI, ref bSSL, ref strHost, ref strIP, ref strPort, ref strRelativePath))
|
||||||
|
{
|
||||||
|
UnityEngine.Debug.Log("ParseURI False");
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
int port;
|
||||||
|
int.TryParse(strPort, out port);
|
||||||
|
|
||||||
|
var ip = Dns.GetHostEntry(strHost).AddressList[0];
|
||||||
|
var ipEndPoint = new IPEndPoint(ip, port);
|
||||||
|
|
||||||
|
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
|
||||||
|
{
|
||||||
|
socket.Connect(ipEndPoint);
|
||||||
|
|
||||||
|
string request = $"GET {strRelativePath} HTTP/1.1\r\nHost: {strHost}\r\nConnection: Close\r\n\r\n";
|
||||||
|
byte[] buffer = Encoding.ASCII.GetBytes(request);
|
||||||
|
socket.Send(buffer);
|
||||||
|
|
||||||
|
// 读取响应
|
||||||
|
using (var stream = new NetworkStream(socket))
|
||||||
|
using (var reader = new StreamReader(stream))
|
||||||
|
{
|
||||||
|
string response = reader.ReadToEnd();
|
||||||
|
UnityEngine.Debug.Log($"response->{response}");
|
||||||
|
|
||||||
|
// 这里可以添加更复杂的逻辑来解析HTTP响应并下载文件
|
||||||
|
// 示例中仅打印了响应
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
void TCPTest()
|
||||||
|
{
|
||||||
|
string strHost = "139.186.160.243";
|
||||||
|
string strPort = "10492";
|
||||||
|
Socket sClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
|
||||||
|
Debug.Log($"EndPoint server->{strHost}:strPort");
|
||||||
|
EndPoint server = new IPEndPoint(IPAddress.Parse(strHost), System.Convert.ToInt32(strPort));
|
||||||
|
Debug.Log($"BeginConnect");
|
||||||
|
sClient.BeginConnect(server, new AsyncCallback(ConnectCallback), sClient);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void ConnectCallback(IAsyncResult ar)
|
||||||
|
{
|
||||||
|
Debug.Log($"ConnectCallback");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Socket client = (Socket)ar.AsyncState;
|
||||||
|
client.EndConnect(ar);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
//WSLog.LogError(e.Message);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
//connectDone.Set();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TestKeyBoard()
|
||||||
|
{
|
||||||
|
Debug.Log($" isSupported -> {TouchScreenKeyboard.isSupported}");
|
||||||
|
TouchScreenKeyboard.Open("", TouchScreenKeyboardType.Default);
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Assets/Script/MainTest.cs.meta
Normal file
11
Assets/Script/MainTest.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 15f0c471608dc5547b77cdcab18d79d3
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
41
Packages/manifest.json
Normal file
41
Packages/manifest.json
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.collab-proxy": "2.0.0",
|
||||||
|
"com.unity.feature.development": "1.0.1",
|
||||||
|
"com.unity.textmeshpro": "3.0.6",
|
||||||
|
"com.unity.timeline": "1.7.2",
|
||||||
|
"com.unity.ugui": "1.0.0",
|
||||||
|
"com.unity.visualscripting": "1.8.0",
|
||||||
|
"com.unity.modules.ai": "1.0.0",
|
||||||
|
"com.unity.modules.androidjni": "1.0.0",
|
||||||
|
"com.unity.modules.animation": "1.0.0",
|
||||||
|
"com.unity.modules.assetbundle": "1.0.0",
|
||||||
|
"com.unity.modules.audio": "1.0.0",
|
||||||
|
"com.unity.modules.cloth": "1.0.0",
|
||||||
|
"com.unity.modules.director": "1.0.0",
|
||||||
|
"com.unity.modules.imageconversion": "1.0.0",
|
||||||
|
"com.unity.modules.imgui": "1.0.0",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0",
|
||||||
|
"com.unity.modules.particlesystem": "1.0.0",
|
||||||
|
"com.unity.modules.physics": "1.0.0",
|
||||||
|
"com.unity.modules.physics2d": "1.0.0",
|
||||||
|
"com.unity.modules.screencapture": "1.0.0",
|
||||||
|
"com.unity.modules.terrain": "1.0.0",
|
||||||
|
"com.unity.modules.terrainphysics": "1.0.0",
|
||||||
|
"com.unity.modules.tilemap": "1.0.0",
|
||||||
|
"com.unity.modules.ui": "1.0.0",
|
||||||
|
"com.unity.modules.uielements": "1.0.0",
|
||||||
|
"com.unity.modules.umbra": "1.0.0",
|
||||||
|
"com.unity.modules.unityanalytics": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequestassetbundle": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequestaudio": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequesttexture": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequestwww": "1.0.0",
|
||||||
|
"com.unity.modules.vehicles": "1.0.0",
|
||||||
|
"com.unity.modules.video": "1.0.0",
|
||||||
|
"com.unity.modules.vr": "1.0.0",
|
||||||
|
"com.unity.modules.wind": "1.0.0",
|
||||||
|
"com.unity.modules.xr": "1.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
382
Packages/packages-lock.json
Normal file
382
Packages/packages-lock.json
Normal file
@ -0,0 +1,382 @@
|
|||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.collab-proxy": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.editorcoroutines": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.ext.nunit": {
|
||||||
|
"version": "1.0.6",
|
||||||
|
"depth": 2,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.feature.development": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.ide.visualstudio": "2.0.17",
|
||||||
|
"com.unity.ide.rider": "3.0.18",
|
||||||
|
"com.unity.ide.vscode": "1.2.5",
|
||||||
|
"com.unity.editorcoroutines": "1.0.0",
|
||||||
|
"com.unity.performance.profile-analyzer": "1.1.1",
|
||||||
|
"com.unity.test-framework": "1.1.33",
|
||||||
|
"com.unity.testtools.codecoverage": "1.2.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.ide.rider": {
|
||||||
|
"version": "3.0.18",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.ext.nunit": "1.0.6"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.ide.visualstudio": {
|
||||||
|
"version": "2.0.17",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.test-framework": "1.1.9"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.ide.vscode": {
|
||||||
|
"version": "1.2.5",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.performance.profile-analyzer": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.settings-manager": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"depth": 2,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.test-framework": {
|
||||||
|
"version": "1.1.33",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.ext.nunit": "1.0.6",
|
||||||
|
"com.unity.modules.imgui": "1.0.0",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.testtools.codecoverage": {
|
||||||
|
"version": "1.2.2",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.test-framework": "1.0.16",
|
||||||
|
"com.unity.settings-manager": "1.0.1"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.textmeshpro": {
|
||||||
|
"version": "3.0.6",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.ugui": "1.0.0"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.timeline": {
|
||||||
|
"version": "1.7.2",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.audio": "1.0.0",
|
||||||
|
"com.unity.modules.director": "1.0.0",
|
||||||
|
"com.unity.modules.animation": "1.0.0",
|
||||||
|
"com.unity.modules.particlesystem": "1.0.0"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.ugui": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.ui": "1.0.0",
|
||||||
|
"com.unity.modules.imgui": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.visualscripting": {
|
||||||
|
"version": "1.8.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "registry",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.ugui": "1.0.0",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0"
|
||||||
|
},
|
||||||
|
"url": "https://packages.unity.com"
|
||||||
|
},
|
||||||
|
"com.unity.modules.ai": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.androidjni": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.animation": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.assetbundle": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.audio": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.cloth": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.physics": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.director": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.audio": "1.0.0",
|
||||||
|
"com.unity.modules.animation": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.imageconversion": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.imgui": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.jsonserialize": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.particlesystem": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.physics": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.physics2d": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.screencapture": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.imageconversion": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.subsystems": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 1,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.terrain": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.terrainphysics": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.physics": "1.0.0",
|
||||||
|
"com.unity.modules.terrain": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.tilemap": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.physics2d": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.ui": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.uielements": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.ui": "1.0.0",
|
||||||
|
"com.unity.modules.imgui": "1.0.0",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.umbra": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.unityanalytics": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.unitywebrequest": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.unitywebrequestassetbundle": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.assetbundle": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.unitywebrequestaudio": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0",
|
||||||
|
"com.unity.modules.audio": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.unitywebrequesttexture": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0",
|
||||||
|
"com.unity.modules.imageconversion": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.unitywebrequestwww": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequestassetbundle": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequestaudio": "1.0.0",
|
||||||
|
"com.unity.modules.audio": "1.0.0",
|
||||||
|
"com.unity.modules.assetbundle": "1.0.0",
|
||||||
|
"com.unity.modules.imageconversion": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.vehicles": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.physics": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.video": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.audio": "1.0.0",
|
||||||
|
"com.unity.modules.ui": "1.0.0",
|
||||||
|
"com.unity.modules.unitywebrequest": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.vr": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0",
|
||||||
|
"com.unity.modules.physics": "1.0.0",
|
||||||
|
"com.unity.modules.xr": "1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"com.unity.modules.wind": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
|
"com.unity.modules.xr": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {
|
||||||
|
"com.unity.modules.physics": "1.0.0",
|
||||||
|
"com.unity.modules.jsonserialize": "1.0.0",
|
||||||
|
"com.unity.modules.subsystems": "1.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
19
ProjectSettings/AudioManager.asset
Normal file
19
ProjectSettings/AudioManager.asset
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!11 &1
|
||||||
|
AudioManager:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Volume: 1
|
||||||
|
Rolloff Scale: 1
|
||||||
|
Doppler Factor: 1
|
||||||
|
Default Speaker Mode: 2
|
||||||
|
m_SampleRate: 0
|
||||||
|
m_DSPBufferSize: 1024
|
||||||
|
m_VirtualVoiceCount: 512
|
||||||
|
m_RealVoiceCount: 32
|
||||||
|
m_SpatializerPlugin:
|
||||||
|
m_AmbisonicDecoderPlugin:
|
||||||
|
m_DisableAudio: 0
|
||||||
|
m_VirtualizeEffects: 1
|
||||||
|
m_RequestedDSPBufferSize: 1024
|
||||||
6
ProjectSettings/ClusterInputManager.asset
Normal file
6
ProjectSettings/ClusterInputManager.asset
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!236 &1
|
||||||
|
ClusterInputManager:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_Inputs: []
|
||||||
34
ProjectSettings/DynamicsManager.asset
Normal file
34
ProjectSettings/DynamicsManager.asset
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!55 &1
|
||||||
|
PhysicsManager:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 11
|
||||||
|
m_Gravity: {x: 0, y: -9.81, z: 0}
|
||||||
|
m_DefaultMaterial: {fileID: 0}
|
||||||
|
m_BounceThreshold: 2
|
||||||
|
m_SleepThreshold: 0.005
|
||||||
|
m_DefaultContactOffset: 0.01
|
||||||
|
m_DefaultSolverIterations: 6
|
||||||
|
m_DefaultSolverVelocityIterations: 1
|
||||||
|
m_QueriesHitBackfaces: 0
|
||||||
|
m_QueriesHitTriggers: 1
|
||||||
|
m_EnableAdaptiveForce: 0
|
||||||
|
m_ClothInterCollisionDistance: 0
|
||||||
|
m_ClothInterCollisionStiffness: 0
|
||||||
|
m_ContactsGeneration: 1
|
||||||
|
m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||||
|
m_AutoSimulation: 1
|
||||||
|
m_AutoSyncTransforms: 0
|
||||||
|
m_ReuseCollisionCallbacks: 1
|
||||||
|
m_ClothInterCollisionSettingsToggle: 0
|
||||||
|
m_ContactPairsMode: 0
|
||||||
|
m_BroadphaseType: 0
|
||||||
|
m_WorldBounds:
|
||||||
|
m_Center: {x: 0, y: 0, z: 0}
|
||||||
|
m_Extent: {x: 250, y: 250, z: 250}
|
||||||
|
m_WorldSubdivisions: 8
|
||||||
|
m_FrictionType: 0
|
||||||
|
m_EnableEnhancedDeterminism: 0
|
||||||
|
m_EnableUnifiedHeightmaps: 1
|
||||||
|
m_DefaultMaxAngluarSpeed: 7
|
||||||
8
ProjectSettings/EditorBuildSettings.asset
Normal file
8
ProjectSettings/EditorBuildSettings.asset
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1045 &1
|
||||||
|
EditorBuildSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Scenes: []
|
||||||
|
m_configObjects: {}
|
||||||
30
ProjectSettings/EditorSettings.asset
Normal file
30
ProjectSettings/EditorSettings.asset
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!159 &1
|
||||||
|
EditorSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 11
|
||||||
|
m_ExternalVersionControlSupport: Visible Meta Files
|
||||||
|
m_SerializationMode: 2
|
||||||
|
m_LineEndingsForNewScripts: 0
|
||||||
|
m_DefaultBehaviorMode: 0
|
||||||
|
m_PrefabRegularEnvironment: {fileID: 0}
|
||||||
|
m_PrefabUIEnvironment: {fileID: 0}
|
||||||
|
m_SpritePackerMode: 0
|
||||||
|
m_SpritePackerPaddingPower: 1
|
||||||
|
m_EtcTextureCompressorBehavior: 1
|
||||||
|
m_EtcTextureFastCompressor: 1
|
||||||
|
m_EtcTextureNormalCompressor: 2
|
||||||
|
m_EtcTextureBestCompressor: 4
|
||||||
|
m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref
|
||||||
|
m_ProjectGenerationRootNamespace:
|
||||||
|
m_CollabEditorSettings:
|
||||||
|
inProgressEnabled: 1
|
||||||
|
m_EnableTextureStreamingInEditMode: 1
|
||||||
|
m_EnableTextureStreamingInPlayMode: 1
|
||||||
|
m_AsyncShaderCompilation: 1
|
||||||
|
m_EnterPlayModeOptionsEnabled: 0
|
||||||
|
m_EnterPlayModeOptions: 3
|
||||||
|
m_ShowLightmapResolutionOverlay: 1
|
||||||
|
m_UseLegacyProbeSampleCount: 0
|
||||||
|
m_SerializeInlineMappingsOnOneLine: 1
|
||||||
63
ProjectSettings/GraphicsSettings.asset
Normal file
63
ProjectSettings/GraphicsSettings.asset
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!30 &1
|
||||||
|
GraphicsSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 13
|
||||||
|
m_Deferred:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_DeferredReflections:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_ScreenSpaceShadows:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_LegacyDeferred:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_DepthNormals:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_MotionVectors:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_LightHalo:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_LensFlare:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_AlwaysIncludedShaders:
|
||||||
|
- {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
- {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
- {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
- {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
- {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
- {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_PreloadedShaders: []
|
||||||
|
m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
|
||||||
|
type: 0}
|
||||||
|
m_CustomRenderPipeline: {fileID: 0}
|
||||||
|
m_TransparencySortMode: 0
|
||||||
|
m_TransparencySortAxis: {x: 0, y: 0, z: 1}
|
||||||
|
m_DefaultRenderingPath: 1
|
||||||
|
m_DefaultMobileRenderingPath: 1
|
||||||
|
m_TierSettings: []
|
||||||
|
m_LightmapStripping: 0
|
||||||
|
m_FogStripping: 0
|
||||||
|
m_InstancingStripping: 0
|
||||||
|
m_LightmapKeepPlain: 1
|
||||||
|
m_LightmapKeepDirCombined: 1
|
||||||
|
m_LightmapKeepDynamicPlain: 1
|
||||||
|
m_LightmapKeepDynamicDirCombined: 1
|
||||||
|
m_LightmapKeepShadowMask: 1
|
||||||
|
m_LightmapKeepSubtractive: 1
|
||||||
|
m_FogKeepLinear: 1
|
||||||
|
m_FogKeepExp: 1
|
||||||
|
m_FogKeepExp2: 1
|
||||||
|
m_AlbedoSwatchInfos: []
|
||||||
|
m_LightsUseLinearIntensity: 0
|
||||||
|
m_LightsUseColorTemperature: 0
|
||||||
|
m_LogWhenShaderIsCompiled: 0
|
||||||
|
m_AllowEnlightenSupportForUpgradedProject: 0
|
||||||
295
ProjectSettings/InputManager.asset
Normal file
295
ProjectSettings/InputManager.asset
Normal file
@ -0,0 +1,295 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!13 &1
|
||||||
|
InputManager:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Axes:
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Horizontal
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton: left
|
||||||
|
positiveButton: right
|
||||||
|
altNegativeButton: a
|
||||||
|
altPositiveButton: d
|
||||||
|
gravity: 3
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 3
|
||||||
|
snap: 1
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Vertical
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton: down
|
||||||
|
positiveButton: up
|
||||||
|
altNegativeButton: s
|
||||||
|
altPositiveButton: w
|
||||||
|
gravity: 3
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 3
|
||||||
|
snap: 1
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Fire1
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: left ctrl
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: mouse 0
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Fire2
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: left alt
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: mouse 1
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Fire3
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: left shift
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: mouse 2
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Jump
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: space
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Mouse X
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton:
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0.1
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 1
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Mouse Y
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton:
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0.1
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 1
|
||||||
|
axis: 1
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Mouse ScrollWheel
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton:
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0.1
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 1
|
||||||
|
axis: 2
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Horizontal
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton:
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 0
|
||||||
|
dead: 0.19
|
||||||
|
sensitivity: 1
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 2
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Vertical
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton:
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 0
|
||||||
|
dead: 0.19
|
||||||
|
sensitivity: 1
|
||||||
|
snap: 0
|
||||||
|
invert: 1
|
||||||
|
type: 2
|
||||||
|
axis: 1
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Fire1
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: joystick button 0
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Fire2
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: joystick button 1
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Fire3
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: joystick button 2
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Jump
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: joystick button 3
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Submit
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: return
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: joystick button 0
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Submit
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: enter
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: space
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Cancel
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: escape
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: joystick button 1
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
35
ProjectSettings/MemorySettings.asset
Normal file
35
ProjectSettings/MemorySettings.asset
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!387306366 &1
|
||||||
|
MemorySettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_EditorMemorySettings:
|
||||||
|
m_MainAllocatorBlockSize: -1
|
||||||
|
m_ThreadAllocatorBlockSize: -1
|
||||||
|
m_MainGfxBlockSize: -1
|
||||||
|
m_ThreadGfxBlockSize: -1
|
||||||
|
m_CacheBlockSize: -1
|
||||||
|
m_TypetreeBlockSize: -1
|
||||||
|
m_ProfilerBlockSize: -1
|
||||||
|
m_ProfilerEditorBlockSize: -1
|
||||||
|
m_BucketAllocatorGranularity: -1
|
||||||
|
m_BucketAllocatorBucketsCount: -1
|
||||||
|
m_BucketAllocatorBlockSize: -1
|
||||||
|
m_BucketAllocatorBlockCount: -1
|
||||||
|
m_ProfilerBucketAllocatorGranularity: -1
|
||||||
|
m_ProfilerBucketAllocatorBucketsCount: -1
|
||||||
|
m_ProfilerBucketAllocatorBlockSize: -1
|
||||||
|
m_ProfilerBucketAllocatorBlockCount: -1
|
||||||
|
m_TempAllocatorSizeMain: -1
|
||||||
|
m_JobTempAllocatorBlockSize: -1
|
||||||
|
m_BackgroundJobTempAllocatorBlockSize: -1
|
||||||
|
m_JobTempAllocatorReducedBlockSize: -1
|
||||||
|
m_TempAllocatorSizeGIBakingWorker: -1
|
||||||
|
m_TempAllocatorSizeNavMeshWorker: -1
|
||||||
|
m_TempAllocatorSizeAudioWorker: -1
|
||||||
|
m_TempAllocatorSizeCloudWorker: -1
|
||||||
|
m_TempAllocatorSizeGfx: -1
|
||||||
|
m_TempAllocatorSizeJobWorker: -1
|
||||||
|
m_TempAllocatorSizeBackgroundWorker: -1
|
||||||
|
m_TempAllocatorSizePreloadManager: -1
|
||||||
|
m_PlatformMemorySettings: {}
|
||||||
91
ProjectSettings/NavMeshAreas.asset
Normal file
91
ProjectSettings/NavMeshAreas.asset
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!126 &1
|
||||||
|
NavMeshProjectSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
areas:
|
||||||
|
- name: Walkable
|
||||||
|
cost: 1
|
||||||
|
- name: Not Walkable
|
||||||
|
cost: 1
|
||||||
|
- name: Jump
|
||||||
|
cost: 2
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
m_LastAgentTypeID: -887442657
|
||||||
|
m_Settings:
|
||||||
|
- serializedVersion: 2
|
||||||
|
agentTypeID: 0
|
||||||
|
agentRadius: 0.5
|
||||||
|
agentHeight: 2
|
||||||
|
agentSlope: 45
|
||||||
|
agentClimb: 0.75
|
||||||
|
ledgeDropHeight: 0
|
||||||
|
maxJumpAcrossDistance: 0
|
||||||
|
minRegionArea: 2
|
||||||
|
manualCellSize: 0
|
||||||
|
cellSize: 0.16666667
|
||||||
|
manualTileSize: 0
|
||||||
|
tileSize: 256
|
||||||
|
accuratePlacement: 0
|
||||||
|
debug:
|
||||||
|
m_Flags: 0
|
||||||
|
m_SettingNames:
|
||||||
|
- Humanoid
|
||||||
35
ProjectSettings/PackageManagerSettings.asset
Normal file
35
ProjectSettings/PackageManagerSettings.asset
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &1
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 61
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_EnablePreReleasePackages: 0
|
||||||
|
m_EnablePackageDependencies: 0
|
||||||
|
m_AdvancedSettingsExpanded: 1
|
||||||
|
m_ScopedRegistriesSettingsExpanded: 1
|
||||||
|
m_SeeAllPackageVersions: 0
|
||||||
|
oneTimeWarningShown: 0
|
||||||
|
m_Registries:
|
||||||
|
- m_Id: main
|
||||||
|
m_Name:
|
||||||
|
m_Url: https://packages.unity.com
|
||||||
|
m_Scopes: []
|
||||||
|
m_IsDefault: 1
|
||||||
|
m_Capabilities: 7
|
||||||
|
m_UserSelectedRegistryName:
|
||||||
|
m_UserAddingNewScopedRegistry: 0
|
||||||
|
m_RegistryInfoDraft:
|
||||||
|
m_Modified: 0
|
||||||
|
m_ErrorMessage:
|
||||||
|
m_UserModificationsInstanceId: -830
|
||||||
|
m_OriginalInstanceId: -832
|
||||||
|
m_LoadAssets: 0
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"m_Dictionary": {
|
||||||
|
"m_DictionaryValues": []
|
||||||
|
}
|
||||||
|
}
|
||||||
56
ProjectSettings/Physics2DSettings.asset
Normal file
56
ProjectSettings/Physics2DSettings.asset
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!19 &1
|
||||||
|
Physics2DSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 4
|
||||||
|
m_Gravity: {x: 0, y: -9.81}
|
||||||
|
m_DefaultMaterial: {fileID: 0}
|
||||||
|
m_VelocityIterations: 8
|
||||||
|
m_PositionIterations: 3
|
||||||
|
m_VelocityThreshold: 1
|
||||||
|
m_MaxLinearCorrection: 0.2
|
||||||
|
m_MaxAngularCorrection: 8
|
||||||
|
m_MaxTranslationSpeed: 100
|
||||||
|
m_MaxRotationSpeed: 360
|
||||||
|
m_BaumgarteScale: 0.2
|
||||||
|
m_BaumgarteTimeOfImpactScale: 0.75
|
||||||
|
m_TimeToSleep: 0.5
|
||||||
|
m_LinearSleepTolerance: 0.01
|
||||||
|
m_AngularSleepTolerance: 2
|
||||||
|
m_DefaultContactOffset: 0.01
|
||||||
|
m_JobOptions:
|
||||||
|
serializedVersion: 2
|
||||||
|
useMultithreading: 0
|
||||||
|
useConsistencySorting: 0
|
||||||
|
m_InterpolationPosesPerJob: 100
|
||||||
|
m_NewContactsPerJob: 30
|
||||||
|
m_CollideContactsPerJob: 100
|
||||||
|
m_ClearFlagsPerJob: 200
|
||||||
|
m_ClearBodyForcesPerJob: 200
|
||||||
|
m_SyncDiscreteFixturesPerJob: 50
|
||||||
|
m_SyncContinuousFixturesPerJob: 50
|
||||||
|
m_FindNearestContactsPerJob: 100
|
||||||
|
m_UpdateTriggerContactsPerJob: 100
|
||||||
|
m_IslandSolverCostThreshold: 100
|
||||||
|
m_IslandSolverBodyCostScale: 1
|
||||||
|
m_IslandSolverContactCostScale: 10
|
||||||
|
m_IslandSolverJointCostScale: 10
|
||||||
|
m_IslandSolverBodiesPerJob: 50
|
||||||
|
m_IslandSolverContactsPerJob: 50
|
||||||
|
m_AutoSimulation: 1
|
||||||
|
m_QueriesHitTriggers: 1
|
||||||
|
m_QueriesStartInColliders: 1
|
||||||
|
m_CallbacksOnDisable: 1
|
||||||
|
m_ReuseCollisionCallbacks: 1
|
||||||
|
m_AutoSyncTransforms: 0
|
||||||
|
m_AlwaysShowColliders: 0
|
||||||
|
m_ShowColliderSleep: 1
|
||||||
|
m_ShowColliderContacts: 0
|
||||||
|
m_ShowColliderAABB: 0
|
||||||
|
m_ContactArrowScale: 0.2
|
||||||
|
m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
|
||||||
|
m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
|
||||||
|
m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
|
||||||
|
m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
|
||||||
|
m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||||
7
ProjectSettings/PresetManager.asset
Normal file
7
ProjectSettings/PresetManager.asset
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1386491679 &1
|
||||||
|
PresetManager:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_DefaultPresets: {}
|
||||||
738
ProjectSettings/ProjectSettings.asset
Normal file
738
ProjectSettings/ProjectSettings.asset
Normal file
@ -0,0 +1,738 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!129 &1
|
||||||
|
PlayerSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 25
|
||||||
|
productGUID: d3ccb717f361ca141bbdb3fcbcb61859
|
||||||
|
AndroidProfiler: 0
|
||||||
|
AndroidFilterTouchesWhenObscured: 0
|
||||||
|
AndroidEnableSustainedPerformanceMode: 0
|
||||||
|
defaultScreenOrientation: 4
|
||||||
|
targetDevice: 2
|
||||||
|
useOnDemandResources: 0
|
||||||
|
accelerometerFrequency: 60
|
||||||
|
companyName: DefaultCompany
|
||||||
|
productName: SwitchUnityAnyTest
|
||||||
|
defaultCursor: {fileID: 0}
|
||||||
|
cursorHotspot: {x: 0, y: 0}
|
||||||
|
m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
|
||||||
|
m_ShowUnitySplashScreen: 1
|
||||||
|
m_ShowUnitySplashLogo: 1
|
||||||
|
m_SplashScreenOverlayOpacity: 1
|
||||||
|
m_SplashScreenAnimation: 1
|
||||||
|
m_SplashScreenLogoStyle: 1
|
||||||
|
m_SplashScreenDrawMode: 0
|
||||||
|
m_SplashScreenBackgroundAnimationZoom: 1
|
||||||
|
m_SplashScreenLogoAnimationZoom: 1
|
||||||
|
m_SplashScreenBackgroundLandscapeAspect: 1
|
||||||
|
m_SplashScreenBackgroundPortraitAspect: 1
|
||||||
|
m_SplashScreenBackgroundLandscapeUvs:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 1
|
||||||
|
height: 1
|
||||||
|
m_SplashScreenBackgroundPortraitUvs:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 1
|
||||||
|
height: 1
|
||||||
|
m_SplashScreenLogos: []
|
||||||
|
m_VirtualRealitySplashScreen: {fileID: 0}
|
||||||
|
m_HolographicTrackingLossScreen: {fileID: 0}
|
||||||
|
defaultScreenWidth: 1920
|
||||||
|
defaultScreenHeight: 1080
|
||||||
|
defaultScreenWidthWeb: 960
|
||||||
|
defaultScreenHeightWeb: 600
|
||||||
|
m_StereoRenderingPath: 0
|
||||||
|
m_ActiveColorSpace: 0
|
||||||
|
m_SpriteBatchVertexThreshold: 300
|
||||||
|
m_MTRendering: 1
|
||||||
|
mipStripping: 0
|
||||||
|
numberOfMipsStripped: 0
|
||||||
|
numberOfMipsStrippedPerMipmapLimitGroup: {}
|
||||||
|
m_StackTraceTypes: 010000000100000001000000010000000100000001000000
|
||||||
|
iosShowActivityIndicatorOnLoading: -1
|
||||||
|
androidShowActivityIndicatorOnLoading: -1
|
||||||
|
iosUseCustomAppBackgroundBehavior: 0
|
||||||
|
allowedAutorotateToPortrait: 1
|
||||||
|
allowedAutorotateToPortraitUpsideDown: 1
|
||||||
|
allowedAutorotateToLandscapeRight: 1
|
||||||
|
allowedAutorotateToLandscapeLeft: 1
|
||||||
|
useOSAutorotation: 1
|
||||||
|
use32BitDisplayBuffer: 1
|
||||||
|
preserveFramebufferAlpha: 0
|
||||||
|
disableDepthAndStencilBuffers: 0
|
||||||
|
androidStartInFullscreen: 1
|
||||||
|
androidRenderOutsideSafeArea: 1
|
||||||
|
androidUseSwappy: 1
|
||||||
|
androidBlitType: 0
|
||||||
|
androidResizableWindow: 0
|
||||||
|
androidDefaultWindowWidth: 1920
|
||||||
|
androidDefaultWindowHeight: 1080
|
||||||
|
androidMinimumWindowWidth: 400
|
||||||
|
androidMinimumWindowHeight: 300
|
||||||
|
androidFullscreenMode: 1
|
||||||
|
defaultIsNativeResolution: 1
|
||||||
|
macRetinaSupport: 1
|
||||||
|
runInBackground: 1
|
||||||
|
captureSingleScreen: 0
|
||||||
|
muteOtherAudioSources: 0
|
||||||
|
Prepare IOS For Recording: 0
|
||||||
|
Force IOS Speakers When Recording: 0
|
||||||
|
deferSystemGesturesMode: 0
|
||||||
|
hideHomeButton: 0
|
||||||
|
submitAnalytics: 1
|
||||||
|
usePlayerLog: 1
|
||||||
|
bakeCollisionMeshes: 0
|
||||||
|
forceSingleInstance: 0
|
||||||
|
useFlipModelSwapchain: 1
|
||||||
|
resizableWindow: 0
|
||||||
|
useMacAppStoreValidation: 0
|
||||||
|
macAppStoreCategory: public.app-category.games
|
||||||
|
gpuSkinning: 1
|
||||||
|
xboxPIXTextureCapture: 0
|
||||||
|
xboxEnableAvatar: 0
|
||||||
|
xboxEnableKinect: 0
|
||||||
|
xboxEnableKinectAutoTracking: 0
|
||||||
|
xboxEnableFitness: 0
|
||||||
|
visibleInBackground: 1
|
||||||
|
allowFullscreenSwitch: 1
|
||||||
|
fullscreenMode: 1
|
||||||
|
xboxSpeechDB: 0
|
||||||
|
xboxEnableHeadOrientation: 0
|
||||||
|
xboxEnableGuest: 0
|
||||||
|
xboxEnablePIXSampling: 0
|
||||||
|
metalFramebufferOnly: 0
|
||||||
|
xboxOneResolution: 0
|
||||||
|
xboxOneSResolution: 0
|
||||||
|
xboxOneXResolution: 3
|
||||||
|
xboxOneMonoLoggingLevel: 0
|
||||||
|
xboxOneLoggingLevel: 1
|
||||||
|
xboxOneDisableEsram: 0
|
||||||
|
xboxOneEnableTypeOptimization: 0
|
||||||
|
xboxOnePresentImmediateThreshold: 0
|
||||||
|
switchQueueCommandMemory: 0
|
||||||
|
switchQueueControlMemory: 16384
|
||||||
|
switchQueueComputeMemory: 262144
|
||||||
|
switchNVNShaderPoolsGranularity: 33554432
|
||||||
|
switchNVNDefaultPoolsGranularity: 16777216
|
||||||
|
switchNVNOtherPoolsGranularity: 16777216
|
||||||
|
switchGpuScratchPoolGranularity: 2097152
|
||||||
|
switchAllowGpuScratchShrinking: 0
|
||||||
|
switchNVNMaxPublicTextureIDCount: 0
|
||||||
|
switchNVNMaxPublicSamplerIDCount: 0
|
||||||
|
switchNVNGraphicsFirmwareMemory: 32
|
||||||
|
stadiaPresentMode: 0
|
||||||
|
stadiaTargetFramerate: 0
|
||||||
|
vulkanNumSwapchainBuffers: 3
|
||||||
|
vulkanEnableSetSRGBWrite: 0
|
||||||
|
vulkanEnablePreTransform: 1
|
||||||
|
vulkanEnableLateAcquireNextImage: 0
|
||||||
|
vulkanEnableCommandBufferRecycling: 1
|
||||||
|
loadStoreDebugModeEnabled: 0
|
||||||
|
bundleVersion: 0.1
|
||||||
|
preloadedAssets: []
|
||||||
|
metroInputSource: 0
|
||||||
|
wsaTransparentSwapchain: 0
|
||||||
|
m_HolographicPauseOnTrackingLoss: 1
|
||||||
|
xboxOneDisableKinectGpuReservation: 1
|
||||||
|
xboxOneEnable7thCore: 1
|
||||||
|
vrSettings:
|
||||||
|
enable360StereoCapture: 0
|
||||||
|
isWsaHolographicRemotingEnabled: 0
|
||||||
|
enableFrameTimingStats: 0
|
||||||
|
enableOpenGLProfilerGPURecorders: 1
|
||||||
|
useHDRDisplay: 0
|
||||||
|
D3DHDRBitDepth: 0
|
||||||
|
m_ColorGamuts: 00000000
|
||||||
|
targetPixelDensity: 30
|
||||||
|
resolutionScalingMode: 0
|
||||||
|
resetResolutionOnWindowResize: 0
|
||||||
|
androidSupportedAspectRatio: 1
|
||||||
|
androidMaxAspectRatio: 2.1
|
||||||
|
applicationIdentifier: {}
|
||||||
|
buildNumber:
|
||||||
|
Standalone: 0
|
||||||
|
iPhone: 0
|
||||||
|
tvOS: 0
|
||||||
|
overrideDefaultApplicationIdentifier: 0
|
||||||
|
AndroidBundleVersionCode: 1
|
||||||
|
AndroidMinSdkVersion: 22
|
||||||
|
AndroidTargetSdkVersion: 0
|
||||||
|
AndroidPreferredInstallLocation: 1
|
||||||
|
aotOptions:
|
||||||
|
stripEngineCode: 1
|
||||||
|
iPhoneStrippingLevel: 0
|
||||||
|
iPhoneScriptCallOptimization: 0
|
||||||
|
ForceInternetPermission: 0
|
||||||
|
ForceSDCardPermission: 0
|
||||||
|
CreateWallpaper: 0
|
||||||
|
APKExpansionFiles: 0
|
||||||
|
keepLoadedShadersAlive: 0
|
||||||
|
StripUnusedMeshComponents: 1
|
||||||
|
strictShaderVariantMatching: 0
|
||||||
|
VertexChannelCompressionMask: 4054
|
||||||
|
iPhoneSdkVersion: 988
|
||||||
|
iOSTargetOSVersionString: 12.0
|
||||||
|
tvOSSdkVersion: 0
|
||||||
|
tvOSRequireExtendedGameController: 0
|
||||||
|
tvOSTargetOSVersionString: 12.0
|
||||||
|
uIPrerenderedIcon: 0
|
||||||
|
uIRequiresPersistentWiFi: 0
|
||||||
|
uIRequiresFullScreen: 1
|
||||||
|
uIStatusBarHidden: 1
|
||||||
|
uIExitOnSuspend: 0
|
||||||
|
uIStatusBarStyle: 0
|
||||||
|
appleTVSplashScreen: {fileID: 0}
|
||||||
|
appleTVSplashScreen2x: {fileID: 0}
|
||||||
|
tvOSSmallIconLayers: []
|
||||||
|
tvOSSmallIconLayers2x: []
|
||||||
|
tvOSLargeIconLayers: []
|
||||||
|
tvOSLargeIconLayers2x: []
|
||||||
|
tvOSTopShelfImageLayers: []
|
||||||
|
tvOSTopShelfImageLayers2x: []
|
||||||
|
tvOSTopShelfImageWideLayers: []
|
||||||
|
tvOSTopShelfImageWideLayers2x: []
|
||||||
|
iOSLaunchScreenType: 0
|
||||||
|
iOSLaunchScreenPortrait: {fileID: 0}
|
||||||
|
iOSLaunchScreenLandscape: {fileID: 0}
|
||||||
|
iOSLaunchScreenBackgroundColor:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 0
|
||||||
|
iOSLaunchScreenFillPct: 100
|
||||||
|
iOSLaunchScreenSize: 100
|
||||||
|
iOSLaunchScreenCustomXibPath:
|
||||||
|
iOSLaunchScreeniPadType: 0
|
||||||
|
iOSLaunchScreeniPadImage: {fileID: 0}
|
||||||
|
iOSLaunchScreeniPadBackgroundColor:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 0
|
||||||
|
iOSLaunchScreeniPadFillPct: 100
|
||||||
|
iOSLaunchScreeniPadSize: 100
|
||||||
|
iOSLaunchScreeniPadCustomXibPath:
|
||||||
|
iOSLaunchScreenCustomStoryboardPath:
|
||||||
|
iOSLaunchScreeniPadCustomStoryboardPath:
|
||||||
|
iOSDeviceRequirements: []
|
||||||
|
iOSURLSchemes: []
|
||||||
|
macOSURLSchemes: []
|
||||||
|
iOSBackgroundModes: 0
|
||||||
|
iOSMetalForceHardShadows: 0
|
||||||
|
metalEditorSupport: 1
|
||||||
|
metalAPIValidation: 1
|
||||||
|
iOSRenderExtraFrameOnPause: 0
|
||||||
|
iosCopyPluginsCodeInsteadOfSymlink: 0
|
||||||
|
appleDeveloperTeamID:
|
||||||
|
iOSManualSigningProvisioningProfileID:
|
||||||
|
tvOSManualSigningProvisioningProfileID:
|
||||||
|
iOSManualSigningProvisioningProfileType: 0
|
||||||
|
tvOSManualSigningProvisioningProfileType: 0
|
||||||
|
appleEnableAutomaticSigning: 0
|
||||||
|
iOSRequireARKit: 0
|
||||||
|
iOSAutomaticallyDetectAndAddCapabilities: 1
|
||||||
|
appleEnableProMotion: 0
|
||||||
|
shaderPrecisionModel: 0
|
||||||
|
clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea
|
||||||
|
templatePackageId: com.unity.template.3d@8.1.1
|
||||||
|
templateDefaultScene: Assets/Scenes/SampleScene.unity
|
||||||
|
useCustomMainManifest: 0
|
||||||
|
useCustomLauncherManifest: 0
|
||||||
|
useCustomMainGradleTemplate: 0
|
||||||
|
useCustomLauncherGradleManifest: 0
|
||||||
|
useCustomBaseGradleTemplate: 0
|
||||||
|
useCustomGradlePropertiesTemplate: 0
|
||||||
|
useCustomProguardFile: 0
|
||||||
|
AndroidTargetArchitectures: 1
|
||||||
|
AndroidTargetDevices: 0
|
||||||
|
AndroidSplashScreenScale: 0
|
||||||
|
androidSplashScreen: {fileID: 0}
|
||||||
|
AndroidKeystoreName:
|
||||||
|
AndroidKeyaliasName:
|
||||||
|
AndroidEnableArmv9SecurityFeatures: 0
|
||||||
|
AndroidBuildApkPerCpuArchitecture: 0
|
||||||
|
AndroidTVCompatibility: 0
|
||||||
|
AndroidIsGame: 1
|
||||||
|
AndroidEnableTango: 0
|
||||||
|
androidEnableBanner: 1
|
||||||
|
androidUseLowAccuracyLocation: 0
|
||||||
|
androidUseCustomKeystore: 0
|
||||||
|
m_AndroidBanners:
|
||||||
|
- width: 320
|
||||||
|
height: 180
|
||||||
|
banner: {fileID: 0}
|
||||||
|
androidGamepadSupportLevel: 0
|
||||||
|
chromeosInputEmulation: 1
|
||||||
|
AndroidMinifyRelease: 0
|
||||||
|
AndroidMinifyDebug: 0
|
||||||
|
AndroidValidateAppBundleSize: 1
|
||||||
|
AndroidAppBundleSizeToValidate: 150
|
||||||
|
m_BuildTargetIcons: []
|
||||||
|
m_BuildTargetPlatformIcons: []
|
||||||
|
m_BuildTargetBatching:
|
||||||
|
- m_BuildTarget: Standalone
|
||||||
|
m_StaticBatching: 1
|
||||||
|
m_DynamicBatching: 0
|
||||||
|
- m_BuildTarget: tvOS
|
||||||
|
m_StaticBatching: 1
|
||||||
|
m_DynamicBatching: 0
|
||||||
|
- m_BuildTarget: Android
|
||||||
|
m_StaticBatching: 1
|
||||||
|
m_DynamicBatching: 0
|
||||||
|
- m_BuildTarget: iPhone
|
||||||
|
m_StaticBatching: 1
|
||||||
|
m_DynamicBatching: 0
|
||||||
|
- m_BuildTarget: WebGL
|
||||||
|
m_StaticBatching: 0
|
||||||
|
m_DynamicBatching: 0
|
||||||
|
m_BuildTargetShaderSettings: []
|
||||||
|
m_BuildTargetGraphicsJobs:
|
||||||
|
- m_BuildTarget: MacStandaloneSupport
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: Switch
|
||||||
|
m_GraphicsJobs: 1
|
||||||
|
- m_BuildTarget: MetroSupport
|
||||||
|
m_GraphicsJobs: 1
|
||||||
|
- m_BuildTarget: AppleTVSupport
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: BJMSupport
|
||||||
|
m_GraphicsJobs: 1
|
||||||
|
- m_BuildTarget: LinuxStandaloneSupport
|
||||||
|
m_GraphicsJobs: 1
|
||||||
|
- m_BuildTarget: PS4Player
|
||||||
|
m_GraphicsJobs: 1
|
||||||
|
- m_BuildTarget: iOSSupport
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: WindowsStandaloneSupport
|
||||||
|
m_GraphicsJobs: 1
|
||||||
|
- m_BuildTarget: XboxOnePlayer
|
||||||
|
m_GraphicsJobs: 1
|
||||||
|
- m_BuildTarget: LuminSupport
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: AndroidPlayer
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: WebGLSupport
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
m_BuildTargetGraphicsJobMode:
|
||||||
|
- m_BuildTarget: PS4Player
|
||||||
|
m_GraphicsJobMode: 0
|
||||||
|
- m_BuildTarget: XboxOnePlayer
|
||||||
|
m_GraphicsJobMode: 0
|
||||||
|
m_BuildTargetGraphicsAPIs:
|
||||||
|
- m_BuildTarget: AndroidPlayer
|
||||||
|
m_APIs: 150000000b000000
|
||||||
|
m_Automatic: 1
|
||||||
|
- m_BuildTarget: iOSSupport
|
||||||
|
m_APIs: 10000000
|
||||||
|
m_Automatic: 1
|
||||||
|
- m_BuildTarget: AppleTVSupport
|
||||||
|
m_APIs: 10000000
|
||||||
|
m_Automatic: 1
|
||||||
|
- m_BuildTarget: WebGLSupport
|
||||||
|
m_APIs: 0b000000
|
||||||
|
m_Automatic: 1
|
||||||
|
m_BuildTargetVRSettings:
|
||||||
|
- m_BuildTarget: Standalone
|
||||||
|
m_Enabled: 0
|
||||||
|
m_Devices:
|
||||||
|
- Oculus
|
||||||
|
- OpenVR
|
||||||
|
m_DefaultShaderChunkSizeInMB: 16
|
||||||
|
m_DefaultShaderChunkCount: 0
|
||||||
|
openGLRequireES31: 0
|
||||||
|
openGLRequireES31AEP: 0
|
||||||
|
openGLRequireES32: 0
|
||||||
|
m_TemplateCustomTags: {}
|
||||||
|
mobileMTRendering:
|
||||||
|
Android: 1
|
||||||
|
iPhone: 1
|
||||||
|
tvOS: 1
|
||||||
|
m_BuildTargetGroupLightmapEncodingQuality:
|
||||||
|
- m_BuildTarget: Android
|
||||||
|
m_EncodingQuality: 1
|
||||||
|
- m_BuildTarget: iPhone
|
||||||
|
m_EncodingQuality: 1
|
||||||
|
- m_BuildTarget: tvOS
|
||||||
|
m_EncodingQuality: 1
|
||||||
|
m_BuildTargetGroupHDRCubemapEncodingQuality:
|
||||||
|
- m_BuildTarget: Android
|
||||||
|
m_EncodingQuality: 1
|
||||||
|
- m_BuildTarget: iPhone
|
||||||
|
m_EncodingQuality: 1
|
||||||
|
- m_BuildTarget: tvOS
|
||||||
|
m_EncodingQuality: 1
|
||||||
|
m_BuildTargetGroupLightmapSettings: []
|
||||||
|
m_BuildTargetGroupLoadStoreDebugModeSettings: []
|
||||||
|
m_BuildTargetNormalMapEncoding:
|
||||||
|
- m_BuildTarget: Android
|
||||||
|
m_Encoding: 1
|
||||||
|
- m_BuildTarget: iPhone
|
||||||
|
m_Encoding: 1
|
||||||
|
- m_BuildTarget: tvOS
|
||||||
|
m_Encoding: 1
|
||||||
|
m_BuildTargetDefaultTextureCompressionFormat:
|
||||||
|
- m_BuildTarget: Android
|
||||||
|
m_Format: 3
|
||||||
|
playModeTestRunnerEnabled: 0
|
||||||
|
runPlayModeTestAsEditModeTest: 0
|
||||||
|
actionOnDotNetUnhandledException: 1
|
||||||
|
enableInternalProfiler: 0
|
||||||
|
logObjCUncaughtExceptions: 1
|
||||||
|
enableCrashReportAPI: 0
|
||||||
|
cameraUsageDescription:
|
||||||
|
locationUsageDescription:
|
||||||
|
microphoneUsageDescription:
|
||||||
|
bluetoothUsageDescription:
|
||||||
|
macOSTargetOSVersion: 10.13.0
|
||||||
|
switchNMETAOverride: Application.aarch64.lp64.nmeta
|
||||||
|
switchNetLibKey:
|
||||||
|
switchSocketMemoryPoolSize: 6144
|
||||||
|
switchSocketAllocatorPoolSize: 128
|
||||||
|
switchSocketConcurrencyLimit: 14
|
||||||
|
switchScreenResolutionBehavior: 2
|
||||||
|
switchUseCPUProfiler: 0
|
||||||
|
switchUseGOLDLinker: 0
|
||||||
|
switchLTOSetting: 0
|
||||||
|
switchApplicationID: 0x01004b9000490000
|
||||||
|
switchNSODependencies:
|
||||||
|
switchCompilerFlags:
|
||||||
|
switchTitleNames_0:
|
||||||
|
switchTitleNames_1:
|
||||||
|
switchTitleNames_2:
|
||||||
|
switchTitleNames_3:
|
||||||
|
switchTitleNames_4:
|
||||||
|
switchTitleNames_5:
|
||||||
|
switchTitleNames_6:
|
||||||
|
switchTitleNames_7:
|
||||||
|
switchTitleNames_8:
|
||||||
|
switchTitleNames_9:
|
||||||
|
switchTitleNames_10:
|
||||||
|
switchTitleNames_11:
|
||||||
|
switchTitleNames_12:
|
||||||
|
switchTitleNames_13:
|
||||||
|
switchTitleNames_14:
|
||||||
|
switchTitleNames_15:
|
||||||
|
switchPublisherNames_0:
|
||||||
|
switchPublisherNames_1:
|
||||||
|
switchPublisherNames_2:
|
||||||
|
switchPublisherNames_3:
|
||||||
|
switchPublisherNames_4:
|
||||||
|
switchPublisherNames_5:
|
||||||
|
switchPublisherNames_6:
|
||||||
|
switchPublisherNames_7:
|
||||||
|
switchPublisherNames_8:
|
||||||
|
switchPublisherNames_9:
|
||||||
|
switchPublisherNames_10:
|
||||||
|
switchPublisherNames_11:
|
||||||
|
switchPublisherNames_12:
|
||||||
|
switchPublisherNames_13:
|
||||||
|
switchPublisherNames_14:
|
||||||
|
switchPublisherNames_15:
|
||||||
|
switchIcons_0: {fileID: 0}
|
||||||
|
switchIcons_1: {fileID: 0}
|
||||||
|
switchIcons_2: {fileID: 0}
|
||||||
|
switchIcons_3: {fileID: 0}
|
||||||
|
switchIcons_4: {fileID: 0}
|
||||||
|
switchIcons_5: {fileID: 0}
|
||||||
|
switchIcons_6: {fileID: 0}
|
||||||
|
switchIcons_7: {fileID: 0}
|
||||||
|
switchIcons_8: {fileID: 0}
|
||||||
|
switchIcons_9: {fileID: 0}
|
||||||
|
switchIcons_10: {fileID: 0}
|
||||||
|
switchIcons_11: {fileID: 0}
|
||||||
|
switchIcons_12: {fileID: 0}
|
||||||
|
switchIcons_13: {fileID: 0}
|
||||||
|
switchIcons_14: {fileID: 0}
|
||||||
|
switchIcons_15: {fileID: 0}
|
||||||
|
switchSmallIcons_0: {fileID: 0}
|
||||||
|
switchSmallIcons_1: {fileID: 0}
|
||||||
|
switchSmallIcons_2: {fileID: 0}
|
||||||
|
switchSmallIcons_3: {fileID: 0}
|
||||||
|
switchSmallIcons_4: {fileID: 0}
|
||||||
|
switchSmallIcons_5: {fileID: 0}
|
||||||
|
switchSmallIcons_6: {fileID: 0}
|
||||||
|
switchSmallIcons_7: {fileID: 0}
|
||||||
|
switchSmallIcons_8: {fileID: 0}
|
||||||
|
switchSmallIcons_9: {fileID: 0}
|
||||||
|
switchSmallIcons_10: {fileID: 0}
|
||||||
|
switchSmallIcons_11: {fileID: 0}
|
||||||
|
switchSmallIcons_12: {fileID: 0}
|
||||||
|
switchSmallIcons_13: {fileID: 0}
|
||||||
|
switchSmallIcons_14: {fileID: 0}
|
||||||
|
switchSmallIcons_15: {fileID: 0}
|
||||||
|
switchManualHTML:
|
||||||
|
switchAccessibleURLs:
|
||||||
|
switchLegalInformation:
|
||||||
|
switchMainThreadStackSize: 1048576
|
||||||
|
switchPresenceGroupId:
|
||||||
|
switchLogoHandling: 0
|
||||||
|
switchReleaseVersion: 0
|
||||||
|
switchDisplayVersion: 1.0.0
|
||||||
|
switchStartupUserAccount: 1
|
||||||
|
switchTouchScreenUsage: 0
|
||||||
|
switchSupportedLanguagesMask: 0
|
||||||
|
switchLogoType: 0
|
||||||
|
switchApplicationErrorCodeCategory:
|
||||||
|
switchUserAccountSaveDataSize: 0
|
||||||
|
switchUserAccountSaveDataJournalSize: 0
|
||||||
|
switchApplicationAttribute: 0
|
||||||
|
switchCardSpecSize: -1
|
||||||
|
switchCardSpecClock: -1
|
||||||
|
switchRatingsMask: 0
|
||||||
|
switchRatingsInt_0: 0
|
||||||
|
switchRatingsInt_1: 0
|
||||||
|
switchRatingsInt_2: 0
|
||||||
|
switchRatingsInt_3: 0
|
||||||
|
switchRatingsInt_4: 0
|
||||||
|
switchRatingsInt_5: 0
|
||||||
|
switchRatingsInt_6: 0
|
||||||
|
switchRatingsInt_7: 0
|
||||||
|
switchRatingsInt_8: 0
|
||||||
|
switchRatingsInt_9: 0
|
||||||
|
switchRatingsInt_10: 0
|
||||||
|
switchRatingsInt_11: 0
|
||||||
|
switchRatingsInt_12: 0
|
||||||
|
switchLocalCommunicationIds_0:
|
||||||
|
switchLocalCommunicationIds_1:
|
||||||
|
switchLocalCommunicationIds_2:
|
||||||
|
switchLocalCommunicationIds_3:
|
||||||
|
switchLocalCommunicationIds_4:
|
||||||
|
switchLocalCommunicationIds_5:
|
||||||
|
switchLocalCommunicationIds_6:
|
||||||
|
switchLocalCommunicationIds_7:
|
||||||
|
switchParentalControl: 0
|
||||||
|
switchAllowsScreenshot: 1
|
||||||
|
switchAllowsVideoCapturing: 1
|
||||||
|
switchAllowsRuntimeAddOnContentInstall: 0
|
||||||
|
switchDataLossConfirmation: 0
|
||||||
|
switchUserAccountLockEnabled: 0
|
||||||
|
switchSystemResourceMemory: 16777216
|
||||||
|
switchSupportedNpadStyles: 22
|
||||||
|
switchNativeFsCacheSize: 32
|
||||||
|
switchIsHoldTypeHorizontal: 0
|
||||||
|
switchSupportedNpadCount: 8
|
||||||
|
switchSocketConfigEnabled: 0
|
||||||
|
switchTcpInitialSendBufferSize: 32
|
||||||
|
switchTcpInitialReceiveBufferSize: 64
|
||||||
|
switchTcpAutoSendBufferSizeMax: 256
|
||||||
|
switchTcpAutoReceiveBufferSizeMax: 256
|
||||||
|
switchUdpSendBufferSize: 9
|
||||||
|
switchUdpReceiveBufferSize: 42
|
||||||
|
switchSocketBufferEfficiency: 4
|
||||||
|
switchSocketInitializeEnabled: 1
|
||||||
|
switchNetworkInterfaceManagerInitializeEnabled: 1
|
||||||
|
switchPlayerConnectionEnabled: 1
|
||||||
|
switchUseNewStyleFilepaths: 1
|
||||||
|
switchUseLegacyFmodPriorities: 0
|
||||||
|
switchUseMicroSleepForYield: 1
|
||||||
|
switchEnableRamDiskSupport: 0
|
||||||
|
switchMicroSleepForYieldTime: 25
|
||||||
|
switchRamDiskSpaceSize: 12
|
||||||
|
ps4NPAgeRating: 12
|
||||||
|
ps4NPTitleSecret:
|
||||||
|
ps4NPTrophyPackPath:
|
||||||
|
ps4ParentalLevel: 11
|
||||||
|
ps4ContentID: ED1633-NPXX51362_00-0000000000000000
|
||||||
|
ps4Category: 0
|
||||||
|
ps4MasterVersion: 01.00
|
||||||
|
ps4AppVersion: 01.00
|
||||||
|
ps4AppType: 0
|
||||||
|
ps4ParamSfxPath:
|
||||||
|
ps4VideoOutPixelFormat: 0
|
||||||
|
ps4VideoOutInitialWidth: 1920
|
||||||
|
ps4VideoOutBaseModeInitialWidth: 1920
|
||||||
|
ps4VideoOutReprojectionRate: 60
|
||||||
|
ps4PronunciationXMLPath:
|
||||||
|
ps4PronunciationSIGPath:
|
||||||
|
ps4BackgroundImagePath:
|
||||||
|
ps4StartupImagePath:
|
||||||
|
ps4StartupImagesFolder:
|
||||||
|
ps4IconImagesFolder:
|
||||||
|
ps4SaveDataImagePath:
|
||||||
|
ps4SdkOverride:
|
||||||
|
ps4BGMPath:
|
||||||
|
ps4ShareFilePath:
|
||||||
|
ps4ShareOverlayImagePath:
|
||||||
|
ps4PrivacyGuardImagePath:
|
||||||
|
ps4ExtraSceSysFile:
|
||||||
|
ps4NPtitleDatPath:
|
||||||
|
ps4RemotePlayKeyAssignment: -1
|
||||||
|
ps4RemotePlayKeyMappingDir:
|
||||||
|
ps4PlayTogetherPlayerCount: 0
|
||||||
|
ps4EnterButtonAssignment: 1
|
||||||
|
ps4ApplicationParam1: 0
|
||||||
|
ps4ApplicationParam2: 0
|
||||||
|
ps4ApplicationParam3: 0
|
||||||
|
ps4ApplicationParam4: 0
|
||||||
|
ps4DownloadDataSize: 0
|
||||||
|
ps4GarlicHeapSize: 2048
|
||||||
|
ps4ProGarlicHeapSize: 2560
|
||||||
|
playerPrefsMaxSize: 32768
|
||||||
|
ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
|
||||||
|
ps4pnSessions: 1
|
||||||
|
ps4pnPresence: 1
|
||||||
|
ps4pnFriends: 1
|
||||||
|
ps4pnGameCustomData: 1
|
||||||
|
playerPrefsSupport: 0
|
||||||
|
enableApplicationExit: 0
|
||||||
|
resetTempFolder: 1
|
||||||
|
restrictedAudioUsageRights: 0
|
||||||
|
ps4UseResolutionFallback: 0
|
||||||
|
ps4ReprojectionSupport: 0
|
||||||
|
ps4UseAudio3dBackend: 0
|
||||||
|
ps4UseLowGarlicFragmentationMode: 1
|
||||||
|
ps4SocialScreenEnabled: 0
|
||||||
|
ps4ScriptOptimizationLevel: 0
|
||||||
|
ps4Audio3dVirtualSpeakerCount: 14
|
||||||
|
ps4attribCpuUsage: 0
|
||||||
|
ps4PatchPkgPath:
|
||||||
|
ps4PatchLatestPkgPath:
|
||||||
|
ps4PatchChangeinfoPath:
|
||||||
|
ps4PatchDayOne: 0
|
||||||
|
ps4attribUserManagement: 0
|
||||||
|
ps4attribMoveSupport: 0
|
||||||
|
ps4attrib3DSupport: 0
|
||||||
|
ps4attribShareSupport: 0
|
||||||
|
ps4attribExclusiveVR: 0
|
||||||
|
ps4disableAutoHideSplash: 0
|
||||||
|
ps4videoRecordingFeaturesUsed: 0
|
||||||
|
ps4contentSearchFeaturesUsed: 0
|
||||||
|
ps4CompatibilityPS5: 0
|
||||||
|
ps4AllowPS5Detection: 0
|
||||||
|
ps4GPU800MHz: 1
|
||||||
|
ps4attribEyeToEyeDistanceSettingVR: 0
|
||||||
|
ps4IncludedModules: []
|
||||||
|
ps4attribVROutputEnabled: 0
|
||||||
|
monoEnv:
|
||||||
|
splashScreenBackgroundSourceLandscape: {fileID: 0}
|
||||||
|
splashScreenBackgroundSourcePortrait: {fileID: 0}
|
||||||
|
blurSplashScreenBackground: 1
|
||||||
|
spritePackerPolicy:
|
||||||
|
webGLMemorySize: 16
|
||||||
|
webGLExceptionSupport: 1
|
||||||
|
webGLNameFilesAsHashes: 0
|
||||||
|
webGLShowDiagnostics: 0
|
||||||
|
webGLDataCaching: 1
|
||||||
|
webGLDebugSymbols: 0
|
||||||
|
webGLEmscriptenArgs:
|
||||||
|
webGLModulesDirectory:
|
||||||
|
webGLTemplate: APPLICATION:Default
|
||||||
|
webGLAnalyzeBuildSize: 0
|
||||||
|
webGLUseEmbeddedResources: 0
|
||||||
|
webGLCompressionFormat: 1
|
||||||
|
webGLWasmArithmeticExceptions: 0
|
||||||
|
webGLLinkerTarget: 1
|
||||||
|
webGLThreadsSupport: 0
|
||||||
|
webGLDecompressionFallback: 0
|
||||||
|
webGLInitialMemorySize: 32
|
||||||
|
webGLMaximumMemorySize: 2048
|
||||||
|
webGLMemoryGrowthMode: 2
|
||||||
|
webGLMemoryLinearGrowthStep: 16
|
||||||
|
webGLMemoryGeometricGrowthStep: 0.2
|
||||||
|
webGLMemoryGeometricGrowthCap: 96
|
||||||
|
webGLPowerPreference: 2
|
||||||
|
scriptingDefineSymbols: {}
|
||||||
|
additionalCompilerArguments: {}
|
||||||
|
platformArchitecture: {}
|
||||||
|
scriptingBackend: {}
|
||||||
|
il2cppCompilerConfiguration: {}
|
||||||
|
il2cppCodeGeneration: {}
|
||||||
|
managedStrippingLevel: {}
|
||||||
|
incrementalIl2cppBuild: {}
|
||||||
|
suppressCommonWarnings: 1
|
||||||
|
allowUnsafeCode: 0
|
||||||
|
useDeterministicCompilation: 1
|
||||||
|
selectedPlatform: 2
|
||||||
|
additionalIl2CppArgs:
|
||||||
|
scriptingRuntimeVersion: 1
|
||||||
|
gcIncremental: 1
|
||||||
|
gcWBarrierValidation: 0
|
||||||
|
apiCompatibilityLevelPerPlatform: {}
|
||||||
|
m_RenderingPath: 1
|
||||||
|
m_MobileRenderingPath: 1
|
||||||
|
metroPackageName: SwitchUnityAnyTest
|
||||||
|
metroPackageVersion:
|
||||||
|
metroCertificatePath:
|
||||||
|
metroCertificatePassword:
|
||||||
|
metroCertificateSubject:
|
||||||
|
metroCertificateIssuer:
|
||||||
|
metroCertificateNotAfter: 0000000000000000
|
||||||
|
metroApplicationDescription: SwitchUnityAnyTest
|
||||||
|
wsaImages: {}
|
||||||
|
metroTileShortName:
|
||||||
|
metroTileShowName: 0
|
||||||
|
metroMediumTileShowName: 0
|
||||||
|
metroLargeTileShowName: 0
|
||||||
|
metroWideTileShowName: 0
|
||||||
|
metroSupportStreamingInstall: 0
|
||||||
|
metroLastRequiredScene: 0
|
||||||
|
metroDefaultTileSize: 1
|
||||||
|
metroTileForegroundText: 2
|
||||||
|
metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
|
||||||
|
metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1}
|
||||||
|
metroSplashScreenUseBackgroundColor: 0
|
||||||
|
platformCapabilities: {}
|
||||||
|
metroTargetDeviceFamilies: {}
|
||||||
|
metroFTAName:
|
||||||
|
metroFTAFileTypes: []
|
||||||
|
metroProtocolName:
|
||||||
|
vcxProjDefaultLanguage:
|
||||||
|
XboxOneProductId:
|
||||||
|
XboxOneUpdateKey:
|
||||||
|
XboxOneSandboxId:
|
||||||
|
XboxOneContentId:
|
||||||
|
XboxOneTitleId:
|
||||||
|
XboxOneSCId:
|
||||||
|
XboxOneGameOsOverridePath:
|
||||||
|
XboxOnePackagingOverridePath:
|
||||||
|
XboxOneAppManifestOverridePath:
|
||||||
|
XboxOneVersion: 1.0.0.0
|
||||||
|
XboxOnePackageEncryption: 0
|
||||||
|
XboxOnePackageUpdateGranularity: 2
|
||||||
|
XboxOneDescription:
|
||||||
|
XboxOneLanguage:
|
||||||
|
- enus
|
||||||
|
XboxOneCapability: []
|
||||||
|
XboxOneGameRating: {}
|
||||||
|
XboxOneIsContentPackage: 0
|
||||||
|
XboxOneEnhancedXboxCompatibilityMode: 0
|
||||||
|
XboxOneEnableGPUVariability: 1
|
||||||
|
XboxOneSockets: {}
|
||||||
|
XboxOneSplashScreen: {fileID: 0}
|
||||||
|
XboxOneAllowedProductIds: []
|
||||||
|
XboxOnePersistentLocalStorageSize: 0
|
||||||
|
XboxOneXTitleMemory: 8
|
||||||
|
XboxOneOverrideIdentityName:
|
||||||
|
XboxOneOverrideIdentityPublisher:
|
||||||
|
vrEditorSettings: {}
|
||||||
|
cloudServicesEnabled:
|
||||||
|
UNet: 1
|
||||||
|
luminIcon:
|
||||||
|
m_Name:
|
||||||
|
m_ModelFolderPath:
|
||||||
|
m_PortalFolderPath:
|
||||||
|
luminCert:
|
||||||
|
m_CertPath:
|
||||||
|
m_SignPackage: 1
|
||||||
|
luminIsChannelApp: 0
|
||||||
|
luminVersion:
|
||||||
|
m_VersionCode: 1
|
||||||
|
m_VersionName:
|
||||||
|
hmiPlayerDataPath:
|
||||||
|
hmiForceSRGBBlit: 1
|
||||||
|
embeddedLinuxEnableGamepadInput: 1
|
||||||
|
hmiCpuConfiguration:
|
||||||
|
apiCompatibilityLevel: 6
|
||||||
|
activeInputHandler: 0
|
||||||
|
windowsGamepadBackendHint: 0
|
||||||
|
cloudProjectId:
|
||||||
|
framebufferDepthMemorylessMode: 0
|
||||||
|
qualitySettingsNames: []
|
||||||
|
projectName:
|
||||||
|
organizationId:
|
||||||
|
cloudEnabled: 0
|
||||||
|
legacyClampBlendShapeWeights: 0
|
||||||
|
hmiLoadingImage: {fileID: 0}
|
||||||
|
virtualTexturingSupportEnabled: 0
|
||||||
|
insecureHttpOption: 0
|
||||||
2
ProjectSettings/ProjectVersion.txt
Normal file
2
ProjectSettings/ProjectVersion.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
m_EditorVersion: 2022.2.4f1
|
||||||
|
m_EditorVersionWithRevision: 2022.2.4f1 (8216e0211249)
|
||||||
232
ProjectSettings/QualitySettings.asset
Normal file
232
ProjectSettings/QualitySettings.asset
Normal file
@ -0,0 +1,232 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!47 &1
|
||||||
|
QualitySettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 5
|
||||||
|
m_CurrentQuality: 5
|
||||||
|
m_QualitySettings:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Very Low
|
||||||
|
pixelLightCount: 0
|
||||||
|
shadows: 0
|
||||||
|
shadowResolution: 0
|
||||||
|
shadowProjection: 1
|
||||||
|
shadowCascades: 1
|
||||||
|
shadowDistance: 15
|
||||||
|
shadowNearPlaneOffset: 3
|
||||||
|
shadowCascade2Split: 0.33333334
|
||||||
|
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
|
||||||
|
shadowmaskMode: 0
|
||||||
|
blendWeights: 1
|
||||||
|
textureQuality: 1
|
||||||
|
anisotropicTextures: 0
|
||||||
|
antiAliasing: 0
|
||||||
|
softParticles: 0
|
||||||
|
softVegetation: 0
|
||||||
|
realtimeReflectionProbes: 0
|
||||||
|
billboardsFaceCameraPosition: 0
|
||||||
|
vSyncCount: 0
|
||||||
|
lodBias: 0.3
|
||||||
|
maximumLODLevel: 0
|
||||||
|
streamingMipmapsActive: 0
|
||||||
|
streamingMipmapsAddAllCameras: 1
|
||||||
|
streamingMipmapsMemoryBudget: 512
|
||||||
|
streamingMipmapsRenderersPerFrame: 512
|
||||||
|
streamingMipmapsMaxLevelReduction: 2
|
||||||
|
streamingMipmapsMaxFileIORequests: 1024
|
||||||
|
particleRaycastBudget: 4
|
||||||
|
asyncUploadTimeSlice: 2
|
||||||
|
asyncUploadBufferSize: 16
|
||||||
|
asyncUploadPersistentBuffer: 1
|
||||||
|
resolutionScalingFixedDPIFactor: 1
|
||||||
|
excludedTargetPlatforms: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Low
|
||||||
|
pixelLightCount: 0
|
||||||
|
shadows: 0
|
||||||
|
shadowResolution: 0
|
||||||
|
shadowProjection: 1
|
||||||
|
shadowCascades: 1
|
||||||
|
shadowDistance: 20
|
||||||
|
shadowNearPlaneOffset: 3
|
||||||
|
shadowCascade2Split: 0.33333334
|
||||||
|
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
|
||||||
|
shadowmaskMode: 0
|
||||||
|
blendWeights: 2
|
||||||
|
textureQuality: 0
|
||||||
|
anisotropicTextures: 0
|
||||||
|
antiAliasing: 0
|
||||||
|
softParticles: 0
|
||||||
|
softVegetation: 0
|
||||||
|
realtimeReflectionProbes: 0
|
||||||
|
billboardsFaceCameraPosition: 0
|
||||||
|
vSyncCount: 0
|
||||||
|
lodBias: 0.4
|
||||||
|
maximumLODLevel: 0
|
||||||
|
streamingMipmapsActive: 0
|
||||||
|
streamingMipmapsAddAllCameras: 1
|
||||||
|
streamingMipmapsMemoryBudget: 512
|
||||||
|
streamingMipmapsRenderersPerFrame: 512
|
||||||
|
streamingMipmapsMaxLevelReduction: 2
|
||||||
|
streamingMipmapsMaxFileIORequests: 1024
|
||||||
|
particleRaycastBudget: 16
|
||||||
|
asyncUploadTimeSlice: 2
|
||||||
|
asyncUploadBufferSize: 16
|
||||||
|
asyncUploadPersistentBuffer: 1
|
||||||
|
resolutionScalingFixedDPIFactor: 1
|
||||||
|
excludedTargetPlatforms: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Medium
|
||||||
|
pixelLightCount: 1
|
||||||
|
shadows: 1
|
||||||
|
shadowResolution: 0
|
||||||
|
shadowProjection: 1
|
||||||
|
shadowCascades: 1
|
||||||
|
shadowDistance: 20
|
||||||
|
shadowNearPlaneOffset: 3
|
||||||
|
shadowCascade2Split: 0.33333334
|
||||||
|
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
|
||||||
|
shadowmaskMode: 0
|
||||||
|
blendWeights: 2
|
||||||
|
textureQuality: 0
|
||||||
|
anisotropicTextures: 1
|
||||||
|
antiAliasing: 0
|
||||||
|
softParticles: 0
|
||||||
|
softVegetation: 0
|
||||||
|
realtimeReflectionProbes: 0
|
||||||
|
billboardsFaceCameraPosition: 0
|
||||||
|
vSyncCount: 1
|
||||||
|
lodBias: 0.7
|
||||||
|
maximumLODLevel: 0
|
||||||
|
streamingMipmapsActive: 0
|
||||||
|
streamingMipmapsAddAllCameras: 1
|
||||||
|
streamingMipmapsMemoryBudget: 512
|
||||||
|
streamingMipmapsRenderersPerFrame: 512
|
||||||
|
streamingMipmapsMaxLevelReduction: 2
|
||||||
|
streamingMipmapsMaxFileIORequests: 1024
|
||||||
|
particleRaycastBudget: 64
|
||||||
|
asyncUploadTimeSlice: 2
|
||||||
|
asyncUploadBufferSize: 16
|
||||||
|
asyncUploadPersistentBuffer: 1
|
||||||
|
resolutionScalingFixedDPIFactor: 1
|
||||||
|
excludedTargetPlatforms: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: High
|
||||||
|
pixelLightCount: 2
|
||||||
|
shadows: 2
|
||||||
|
shadowResolution: 1
|
||||||
|
shadowProjection: 1
|
||||||
|
shadowCascades: 2
|
||||||
|
shadowDistance: 40
|
||||||
|
shadowNearPlaneOffset: 3
|
||||||
|
shadowCascade2Split: 0.33333334
|
||||||
|
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
|
||||||
|
shadowmaskMode: 1
|
||||||
|
blendWeights: 2
|
||||||
|
textureQuality: 0
|
||||||
|
anisotropicTextures: 1
|
||||||
|
antiAliasing: 0
|
||||||
|
softParticles: 0
|
||||||
|
softVegetation: 1
|
||||||
|
realtimeReflectionProbes: 1
|
||||||
|
billboardsFaceCameraPosition: 1
|
||||||
|
vSyncCount: 1
|
||||||
|
lodBias: 1
|
||||||
|
maximumLODLevel: 0
|
||||||
|
streamingMipmapsActive: 0
|
||||||
|
streamingMipmapsAddAllCameras: 1
|
||||||
|
streamingMipmapsMemoryBudget: 512
|
||||||
|
streamingMipmapsRenderersPerFrame: 512
|
||||||
|
streamingMipmapsMaxLevelReduction: 2
|
||||||
|
streamingMipmapsMaxFileIORequests: 1024
|
||||||
|
particleRaycastBudget: 256
|
||||||
|
asyncUploadTimeSlice: 2
|
||||||
|
asyncUploadBufferSize: 16
|
||||||
|
asyncUploadPersistentBuffer: 1
|
||||||
|
resolutionScalingFixedDPIFactor: 1
|
||||||
|
excludedTargetPlatforms: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Very High
|
||||||
|
pixelLightCount: 3
|
||||||
|
shadows: 2
|
||||||
|
shadowResolution: 2
|
||||||
|
shadowProjection: 1
|
||||||
|
shadowCascades: 2
|
||||||
|
shadowDistance: 70
|
||||||
|
shadowNearPlaneOffset: 3
|
||||||
|
shadowCascade2Split: 0.33333334
|
||||||
|
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
|
||||||
|
shadowmaskMode: 1
|
||||||
|
blendWeights: 4
|
||||||
|
textureQuality: 0
|
||||||
|
anisotropicTextures: 2
|
||||||
|
antiAliasing: 2
|
||||||
|
softParticles: 1
|
||||||
|
softVegetation: 1
|
||||||
|
realtimeReflectionProbes: 1
|
||||||
|
billboardsFaceCameraPosition: 1
|
||||||
|
vSyncCount: 1
|
||||||
|
lodBias: 1.5
|
||||||
|
maximumLODLevel: 0
|
||||||
|
streamingMipmapsActive: 0
|
||||||
|
streamingMipmapsAddAllCameras: 1
|
||||||
|
streamingMipmapsMemoryBudget: 512
|
||||||
|
streamingMipmapsRenderersPerFrame: 512
|
||||||
|
streamingMipmapsMaxLevelReduction: 2
|
||||||
|
streamingMipmapsMaxFileIORequests: 1024
|
||||||
|
particleRaycastBudget: 1024
|
||||||
|
asyncUploadTimeSlice: 2
|
||||||
|
asyncUploadBufferSize: 16
|
||||||
|
asyncUploadPersistentBuffer: 1
|
||||||
|
resolutionScalingFixedDPIFactor: 1
|
||||||
|
excludedTargetPlatforms: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Ultra
|
||||||
|
pixelLightCount: 4
|
||||||
|
shadows: 2
|
||||||
|
shadowResolution: 2
|
||||||
|
shadowProjection: 1
|
||||||
|
shadowCascades: 4
|
||||||
|
shadowDistance: 150
|
||||||
|
shadowNearPlaneOffset: 3
|
||||||
|
shadowCascade2Split: 0.33333334
|
||||||
|
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
|
||||||
|
shadowmaskMode: 1
|
||||||
|
blendWeights: 4
|
||||||
|
textureQuality: 0
|
||||||
|
anisotropicTextures: 2
|
||||||
|
antiAliasing: 2
|
||||||
|
softParticles: 1
|
||||||
|
softVegetation: 1
|
||||||
|
realtimeReflectionProbes: 1
|
||||||
|
billboardsFaceCameraPosition: 1
|
||||||
|
vSyncCount: 1
|
||||||
|
lodBias: 2
|
||||||
|
maximumLODLevel: 0
|
||||||
|
streamingMipmapsActive: 0
|
||||||
|
streamingMipmapsAddAllCameras: 1
|
||||||
|
streamingMipmapsMemoryBudget: 512
|
||||||
|
streamingMipmapsRenderersPerFrame: 512
|
||||||
|
streamingMipmapsMaxLevelReduction: 2
|
||||||
|
streamingMipmapsMaxFileIORequests: 1024
|
||||||
|
particleRaycastBudget: 4096
|
||||||
|
asyncUploadTimeSlice: 2
|
||||||
|
asyncUploadBufferSize: 16
|
||||||
|
asyncUploadPersistentBuffer: 1
|
||||||
|
resolutionScalingFixedDPIFactor: 1
|
||||||
|
excludedTargetPlatforms: []
|
||||||
|
m_PerPlatformDefaultQuality:
|
||||||
|
Android: 2
|
||||||
|
Lumin: 5
|
||||||
|
Nintendo 3DS: 5
|
||||||
|
Nintendo Switch: 5
|
||||||
|
PS4: 5
|
||||||
|
PSP2: 2
|
||||||
|
Stadia: 5
|
||||||
|
Standalone: 5
|
||||||
|
WebGL: 3
|
||||||
|
Windows Store Apps: 5
|
||||||
|
XboxOne: 5
|
||||||
|
iPhone: 2
|
||||||
|
tvOS: 2
|
||||||
167
ProjectSettings/SceneTemplateSettings.json
Normal file
167
ProjectSettings/SceneTemplateSettings.json
Normal file
@ -0,0 +1,167 @@
|
|||||||
|
{
|
||||||
|
"templatePinStates": [],
|
||||||
|
"dependencyTypeInfos": [
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.AnimationClip",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEditor.Animations.AnimatorController",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.AnimatorOverrideController",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEditor.Audio.AudioMixerController",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.ComputeShader",
|
||||||
|
"ignore": true,
|
||||||
|
"defaultInstantiationMode": 1,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Cubemap",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.GameObject",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEditor.LightingDataAsset",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.LightingSettings",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Material",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEditor.MonoScript",
|
||||||
|
"ignore": true,
|
||||||
|
"defaultInstantiationMode": 1,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.PhysicMaterial",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.PhysicsMaterial2D",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Rendering.PostProcessing.PostProcessResources",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Rendering.VolumeProfile",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEditor.SceneAsset",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Shader",
|
||||||
|
"ignore": true,
|
||||||
|
"defaultInstantiationMode": 1,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.ShaderVariantCollection",
|
||||||
|
"ignore": true,
|
||||||
|
"defaultInstantiationMode": 1,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Texture",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Texture2D",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "UnityEngine.Timeline.TimelineAsset",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 0,
|
||||||
|
"supportsModification": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"defaultDependencyTypeInfo": {
|
||||||
|
"userAdded": false,
|
||||||
|
"type": "<default_scene_template_dependencies>",
|
||||||
|
"ignore": false,
|
||||||
|
"defaultInstantiationMode": 1,
|
||||||
|
"supportsModification": true
|
||||||
|
},
|
||||||
|
"newSceneOverride": 0
|
||||||
|
}
|
||||||
43
ProjectSettings/TagManager.asset
Normal file
43
ProjectSettings/TagManager.asset
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!78 &1
|
||||||
|
TagManager:
|
||||||
|
serializedVersion: 2
|
||||||
|
tags: []
|
||||||
|
layers:
|
||||||
|
- Default
|
||||||
|
- TransparentFX
|
||||||
|
- Ignore Raycast
|
||||||
|
-
|
||||||
|
- Water
|
||||||
|
- UI
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
m_SortingLayers:
|
||||||
|
- name: Default
|
||||||
|
uniqueID: 0
|
||||||
|
locked: 0
|
||||||
9
ProjectSettings/TimeManager.asset
Normal file
9
ProjectSettings/TimeManager.asset
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!5 &1
|
||||||
|
TimeManager:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
Fixed Timestep: 0.02
|
||||||
|
Maximum Allowed Timestep: 0.33333334
|
||||||
|
m_TimeScale: 1
|
||||||
|
Maximum Particle Timestep: 0.03
|
||||||
36
ProjectSettings/UnityConnectSettings.asset
Normal file
36
ProjectSettings/UnityConnectSettings.asset
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!310 &1
|
||||||
|
UnityConnectSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 1
|
||||||
|
m_Enabled: 0
|
||||||
|
m_TestMode: 0
|
||||||
|
m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
|
||||||
|
m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
|
||||||
|
m_ConfigUrl: https://config.uca.cloud.unity3d.com
|
||||||
|
m_DashboardUrl: https://dashboard.unity3d.com
|
||||||
|
m_TestInitMode: 0
|
||||||
|
CrashReportingSettings:
|
||||||
|
m_EventUrl: https://perf-events.cloud.unity3d.com
|
||||||
|
m_Enabled: 0
|
||||||
|
m_LogBufferSize: 10
|
||||||
|
m_CaptureEditorExceptions: 1
|
||||||
|
UnityPurchasingSettings:
|
||||||
|
m_Enabled: 0
|
||||||
|
m_TestMode: 0
|
||||||
|
UnityAnalyticsSettings:
|
||||||
|
m_Enabled: 0
|
||||||
|
m_TestMode: 0
|
||||||
|
m_InitializeOnStartup: 1
|
||||||
|
m_PackageRequiringCoreStatsPresent: 0
|
||||||
|
UnityAdsSettings:
|
||||||
|
m_Enabled: 0
|
||||||
|
m_InitializeOnStartup: 1
|
||||||
|
m_TestMode: 0
|
||||||
|
m_IosGameId:
|
||||||
|
m_AndroidGameId:
|
||||||
|
m_GameIds: {}
|
||||||
|
m_GameId:
|
||||||
|
PerformanceReportingSettings:
|
||||||
|
m_Enabled: 0
|
||||||
12
ProjectSettings/VFXManager.asset
Normal file
12
ProjectSettings/VFXManager.asset
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!937362698 &1
|
||||||
|
VFXManager:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_IndirectShader: {fileID: 0}
|
||||||
|
m_CopyBufferShader: {fileID: 0}
|
||||||
|
m_SortShader: {fileID: 0}
|
||||||
|
m_StripUpdateShader: {fileID: 0}
|
||||||
|
m_RenderPipeSettingsPath:
|
||||||
|
m_FixedTimeStep: 0.016666668
|
||||||
|
m_MaxDeltaTime: 0.05
|
||||||
8
ProjectSettings/VersionControlSettings.asset
Normal file
8
ProjectSettings/VersionControlSettings.asset
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!890905787 &1
|
||||||
|
VersionControlSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_Mode: Visible Meta Files
|
||||||
|
m_CollabEditorSettings:
|
||||||
|
inProgressEnabled: 1
|
||||||
10
ProjectSettings/XRSettings.asset
Normal file
10
ProjectSettings/XRSettings.asset
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"m_SettingKeys": [
|
||||||
|
"VR Device Disabled",
|
||||||
|
"VR Device User Alert"
|
||||||
|
],
|
||||||
|
"m_SettingValues": [
|
||||||
|
"False",
|
||||||
|
"False"
|
||||||
|
]
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user