归档
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