init
This commit is contained in:
commit
14f9f3f3f2
106
.gitignore
vendored
Normal file
106
.gitignore
vendored
Normal file
@ -0,0 +1,106 @@
|
||||
# This .gitignore file should be placed at the root of your Unity project directory
|
||||
#
|
||||
# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore
|
||||
#
|
||||
.utmp/
|
||||
/[Ll]ibrary/
|
||||
/[Tt]emp/
|
||||
/[Oo]bj/
|
||||
/[Bb]uild/
|
||||
/[Bb]uilds/
|
||||
/[Ll]ogs/
|
||||
/[Uu]ser[Ss]ettings/
|
||||
*.log
|
||||
|
||||
# By default unity supports Blender asset imports, *.blend1 blender files do not need to be commited to version control.
|
||||
*.blend1
|
||||
*.blend1.meta
|
||||
|
||||
# MemoryCaptures can get excessive in size.
|
||||
# They also could contain extremely sensitive data
|
||||
/[Mm]emoryCaptures/
|
||||
|
||||
# Recordings can get excessive in size
|
||||
/[Rr]ecordings/
|
||||
|
||||
# Uncomment this line if you wish to ignore the asset store tools plugin
|
||||
# /[Aa]ssets/AssetStoreTools*
|
||||
|
||||
# Autogenerated Jetbrains Rider plugin
|
||||
/[Aa]ssets/Plugins/Editor/JetBrains*
|
||||
# Jetbrains Rider personal-layer settings
|
||||
*.DotSettings.user
|
||||
|
||||
# Visual Studio cache directory
|
||||
.vs/
|
||||
|
||||
# Gradle cache directory
|
||||
.gradle/
|
||||
|
||||
# Autogenerated VS/MD/Consulo solution and project files
|
||||
ExportedObj/
|
||||
.consulo/
|
||||
*.csproj
|
||||
*.unityproj
|
||||
*.sln
|
||||
*.suo
|
||||
*.tmp
|
||||
*.user
|
||||
*.userprefs
|
||||
*.pidb
|
||||
*.booproj
|
||||
*.svd
|
||||
*.pdb
|
||||
*.mdb
|
||||
*.opendb
|
||||
*.VC.db
|
||||
|
||||
# Unity3D generated meta files
|
||||
*.pidb.meta
|
||||
*.pdb.meta
|
||||
*.mdb.meta
|
||||
|
||||
# Unity3D generated file on crash reports
|
||||
sysinfo.txt
|
||||
|
||||
# Mono auto generated files
|
||||
mono_crash.*
|
||||
|
||||
# Builds
|
||||
*.apk
|
||||
*.aab
|
||||
*.unitypackage
|
||||
*.unitypackage.meta
|
||||
|
||||
# Crashlytics generated file
|
||||
crashlytics-build.properties
|
||||
|
||||
# TestRunner generated files
|
||||
InitTestScene*.unity*
|
||||
|
||||
# Addressables default ignores, before user customizations
|
||||
/ServerData
|
||||
/[Aa]ssets/StreamingAssets/aa*
|
||||
/[Aa]ssets/AddressableAssetsData/link.xml*
|
||||
/[Aa]ssets/Addressables_Temp*
|
||||
# By default, Addressables content builds will generate addressables_content_state.bin
|
||||
# files in platform-specific subfolders, for example:
|
||||
# /Assets/AddressableAssetsData/OSX/addressables_content_state.bin
|
||||
/[Aa]ssets/AddressableAssetsData/*/*.bin*
|
||||
|
||||
# Visual Scripting auto-generated files
|
||||
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Flow/UnitOptions.db
|
||||
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Flow/UnitOptions.db.meta
|
||||
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers
|
||||
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers.meta
|
||||
|
||||
# Auto-generated scenes by play mode tests
|
||||
/[Aa]ssets/[Ii]nit[Tt]est[Ss]cene*.unity*
|
||||
|
||||
.vsconfig
|
||||
|
||||
Logs/
|
||||
[Aa]ssets/
|
||||
[Pp]ublish/
|
||||
.vscode/settings.json
|
||||
*.dat
|
||||
5
.vscode/extensions.json
vendored
Normal file
5
.vscode/extensions.json
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"visualstudiotoolsforunity.vstuc"
|
||||
]
|
||||
}
|
||||
10
.vscode/launch.json
vendored
Normal file
10
.vscode/launch.json
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Attach to Unity",
|
||||
"type": "vstuc",
|
||||
"request": "attach"
|
||||
}
|
||||
]
|
||||
}
|
||||
4
MeowMentDebugTool.slnx
Normal file
4
MeowMentDebugTool.slnx
Normal file
@ -0,0 +1,4 @@
|
||||
<Solution>
|
||||
<Project Path="Hontbei.Meowmentdebugtool.Editor.csproj" />
|
||||
<Project Path="Hontbei.Meowmentdebugtool.csproj" />
|
||||
</Solution>
|
||||
8
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Documentation.meta
vendored
Normal file
8
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Documentation.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f19c5c16d0604dc46933685ee55053c1
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
169
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Documentation/MeowmentDebugTool.md
vendored
Normal file
169
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Documentation/MeowmentDebugTool.md
vendored
Normal file
@ -0,0 +1,169 @@
|
||||
>>>
|
||||
**_Package Documentation Template_**
|
||||
|
||||
Use this template to create preliminary, high-level documentation meant to introduce users to the feature and the sample files included in this package. When writing your documentation, do the following:
|
||||
|
||||
1. Follow instructions in blockquotes.
|
||||
|
||||
2. Replace angle brackets with the appropriate text. For example, replace "<package name>" with the official name of the package.
|
||||
|
||||
3. Delete sections that do not apply to your package. For example, a package containing only sample files does not have a "Using <package_name>" section, so this section can be removed.
|
||||
|
||||
4. After documentation is completed, make sure you delete all instructions and examples in blockquotes including this preamble and its title:
|
||||
|
||||
```
|
||||
>>>
|
||||
Delete all of the text between pairs of blockquote markdown.
|
||||
>>>
|
||||
```
|
||||
>>>
|
||||
|
||||
# About <package name>
|
||||
|
||||
>>>
|
||||
Name the heading of the first topic after the **displayName** of the package as it appears in the package manifest.
|
||||
|
||||
This first topic includes a brief, high-level explanation of the package and, if applicable, provides links to Unity Manual topics.
|
||||
|
||||
There are two types of packages:
|
||||
|
||||
- Packages that include features that augment the Unity Editor or Runtime.
|
||||
- Packages that include sample files.
|
||||
|
||||
Choose one of the following introductory paragraphs that best fits the package:
|
||||
>>>
|
||||
|
||||
Use the <package name> package to <list of the main uses for the package>. For example, use <package name> to create/generate/extend/capture <mention major use case, or a good example of what the package can be used for>. The <package name> package also includes <other relevant features or uses>.
|
||||
|
||||
> *or*
|
||||
|
||||
The <package name> package includes examples of <name of asset type, model, prefabs, and/or other GameObjects in the package>. For more information, see <xref to topic in the Unity Manual>.
|
||||
|
||||
>>>
|
||||
**_Examples:_**
|
||||
|
||||
Here are some examples for reference only. Do not include these in the final documentation file:
|
||||
|
||||
*Use the Unity Recorder package to capture and save in-game data. For example, use Unity Recorder to record an mp4 file during a game session. The Unity Recorder package also includes an interface for setting-up and triggering recording sessions.*
|
||||
|
||||
*The Timeline Examples package includes examples of Timeline assets, Timeline Instances, animation, GameObjects, and scripts that illustrate how to use Unity's Timeline. For more information, see [ Unity's Timeline](https://docs.unity3d.com/Manual/TimelineSection.html) in the [Unity Manual](https://docs.unity3d.com). For licensing and usage, see Package Licensing.*
|
||||
>>>
|
||||
|
||||
# Installing <package name>
|
||||
>>>
|
||||
Begin this section with a cross-reference to the official Unity Manual topic on how to install packages. If the package requires special installation instructions, include these steps in this section.
|
||||
>>>
|
||||
|
||||
To install this package, follow the instructions in the [Package Manager documentation](https://docs.unity3d.com/Packages/com.unity.package-manager-ui@latest/index.html).
|
||||
|
||||
>>>
|
||||
For some packages, there may be additional steps to complete the setup. You can add those here.
|
||||
>>>
|
||||
|
||||
In addition, you need to install the following resources:
|
||||
|
||||
- <name of resource>: To install, open *Window > <name of menu item>*. The resource appears <at this location>.
|
||||
- <name of sample>: To install, open *Window > <name of menu item>*. The new sample folder appears <at this location>.
|
||||
|
||||
|
||||
<a name="UsingPackageName"></a>
|
||||
# Using <package name>
|
||||
>>>
|
||||
The contents of this section depends on the type of package.
|
||||
|
||||
For packages that augment the Unity Editor with additional features, this section should include workflow and/or reference documentation:
|
||||
|
||||
* At a minimum, this section should include reference documentation that describes the windows, editors, and properties that the package adds to Unity. This reference documentation should include screen grabs (see how to add screens below), a list of settings, an explanation of what each setting does, and the default values of each setting.
|
||||
* Ideally, this section should also include a workflow: a list of steps that the user can easily follow that demonstrates how to use the feature. This list of steps should include screen grabs (see how to add screens below) to better describe how to use the feature.
|
||||
|
||||
For packages that include sample files, this section may include detailed information on how the user can use these sample files in their projects and scenes. However, workflow diagrams or illustrations could be included if deemed appropriate.
|
||||
|
||||
## How to add images
|
||||
|
||||
*(This section is for reference. Do not include in the final documentation file)*
|
||||
|
||||
If the [Using <package name>](#UsingPackageName) section includes screen grabs or diagrams, a link to the image must be added to this MD file, before or after the paragraph with the instruction or description that references the image. In addition, a caption should be added to the image link that includes the name of the screen or diagram. All images must be PNG files with underscores for spaces. No animated GIFs.
|
||||
|
||||
An example is included below:
|
||||
|
||||

|
||||
|
||||
Notice that the example screen shot is included in the images folder. All screen grabs and/or diagrams must be added and referenced from the images folder.
|
||||
|
||||
For more on the Unity documentation standards for creating and adding screen grabs, see this confluence page: https://confluence.hq.unity3d.com/pages/viewpage.action?pageId=13500715
|
||||
>>>
|
||||
|
||||
|
||||
|
||||
# Technical details
|
||||
## Requirements
|
||||
>>>
|
||||
This subtopic includes a bullet list with the compatible versions of Unity. This subtopic may also include additional requirements or recommendations for 3rd party software or hardware. An example includes a dependency on other packages. If you need to include references to non-Unity products, make sure you refer to these products correctly and that all references include the proper trademarks (tm or r)
|
||||
>>>
|
||||
|
||||
This version of <package name> is compatible with the following versions of the Unity Editor:
|
||||
|
||||
* 2018.1 and later (recommended)
|
||||
|
||||
To use this package, you must have the following 3rd party products:
|
||||
|
||||
* <product name and version with trademark or registered trademark.>
|
||||
* <product name and version with trademark or registered trademark.>
|
||||
* <product name and version with trademark or registered trademark.>
|
||||
|
||||
## Known limitations
|
||||
>>>
|
||||
This section lists the known limitations with this version of the package. If there are no known limitations, or if the limitations are trivial, exclude this section. An example is provided.
|
||||
>>>
|
||||
|
||||
<package name> version <package version> includes the following known limitations:
|
||||
|
||||
* <brief one-line description of first limitation.>
|
||||
* <brief one-line description of second limitation.>
|
||||
* <and so on>
|
||||
|
||||
>>>
|
||||
*Example (For reference. Do not include in the final documentation file):*
|
||||
|
||||
The Unity Recorder version 1.0 has the following limitations:*
|
||||
|
||||
* The Unity Recorder does not support sound.
|
||||
* The Recorder window and Recorder properties are not available in standalone players.
|
||||
* MP4 encoding is only available on Windows.
|
||||
>>>
|
||||
|
||||
## Package contents
|
||||
>>>
|
||||
This section includes the location of important files you want the user to know about. For example, if this is a sample package containing textures, models, and materials separated by sample group, you may want to provide the folder location of each group.
|
||||
>>>
|
||||
|
||||
The following table indicates the <describe the breakdown you used here>:
|
||||
|
||||
|Location|Description|
|
||||
|---|---|
|
||||
|`<folder>`|Contains <describe what the folder contains>.|
|
||||
|`<file>`|Contains <describe what the file represents or implements>.|
|
||||
|
||||
>>>
|
||||
*Example (For reference. Do not include in the final documentation file):*
|
||||
|
||||
The following table indicates the root folder of each type of sample in this package. Each sample's root folder contains its own Materials, Models, or Textures folders:
|
||||
|
||||
|Folder Location|Description|
|
||||
|---|---|
|
||||
|`WoodenCrate_Orange`|Root folder containing the assets for the orange crates.|
|
||||
|`WoodenCrate_Mahogany`|Root folder containing the assets for the mahogany crates.|
|
||||
|`WoodenCrate_Shared`|Root folder containing any material assets shared by all crates.|
|
||||
>>>
|
||||
|
||||
## Document revision history
|
||||
>>>
|
||||
This section includes the revision history of the document. The revision history tracks when a document is created, edited, and updated. If you create or update a document, you must add a new row describing the revision. The Documentation Team also uses this table to track when a document is edited and its editing level. An example is provided:
|
||||
|
||||
|Date|Reason|
|
||||
|---|---|
|
||||
|Sept 12, 2017|Unedited. Published to package.|
|
||||
|Sept 10, 2017|Document updated for package version 1.1.<br>New features: <li>audio support for capturing MP4s.<li>Instructions on saving Recorder prefabs|
|
||||
|Sept 5, 2017|Limited edit by Documentation Team. Published to package.|
|
||||
|Aug 25, 2017|Document created. Matches package version 1.0.|
|
||||
>>>
|
||||
7
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Documentation/MeowmentDebugTool.md.meta
vendored
Normal file
7
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Documentation/MeowmentDebugTool.md.meta
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aec9ee7d68a191447a418cccf7100f20
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Editor.meta
vendored
Normal file
8
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Editor.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 94ff33738b6ce3f4ab8b77b08ced2cdf
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
99
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Editor/CreateTabButtonPrefab.cs
vendored
Normal file
99
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Editor/CreateTabButtonPrefab.cs
vendored
Normal file
@ -0,0 +1,99 @@
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using UnityEngine.UI;
|
||||
using TMPro;
|
||||
|
||||
/// <summary>
|
||||
/// 手动创建Tab按钮预制件的辅助工具
|
||||
/// </summary>
|
||||
public class CreateTabButtonPrefab : EditorWindow
|
||||
{
|
||||
[MenuItem("Tools/Debug Tool/手动创建Tab按钮预制件")]
|
||||
public static void CreatePrefab()
|
||||
{
|
||||
// 创建Tab按钮
|
||||
GameObject btn = new GameObject("TabButtonPrefab");
|
||||
|
||||
RectTransform rt = btn.AddComponent<RectTransform>();
|
||||
rt.sizeDelta = new Vector2(200, 80);
|
||||
|
||||
Image img = btn.AddComponent<Image>();
|
||||
img.color = Color.gray;
|
||||
|
||||
Button button = btn.AddComponent<Button>();
|
||||
button.targetGraphic = img;
|
||||
|
||||
// 添加文本
|
||||
GameObject textObj = new GameObject("Text");
|
||||
textObj.transform.SetParent(btn.transform, false);
|
||||
|
||||
RectTransform textRt = textObj.AddComponent<RectTransform>();
|
||||
textRt.anchorMin = Vector2.zero;
|
||||
textRt.anchorMax = Vector2.one;
|
||||
textRt.sizeDelta = Vector2.zero;
|
||||
|
||||
TextMeshProUGUI text = textObj.AddComponent<TextMeshProUGUI>();
|
||||
text.text = "Tab";
|
||||
text.fontSize = 32;
|
||||
text.alignment = TextAlignmentOptions.Center;
|
||||
text.color = Color.white;
|
||||
|
||||
// 保存为预制件
|
||||
string path = "Assets/TabButtonPrefab.prefab";
|
||||
PrefabUtility.SaveAsPrefabAsset(btn, path);
|
||||
|
||||
// 清理
|
||||
DestroyImmediate(btn);
|
||||
|
||||
// 选中
|
||||
Selection.activeObject = AssetDatabase.LoadAssetAtPath<GameObject>(path);
|
||||
|
||||
EditorUtility.DisplayDialog("成功", $"Tab按钮预制件已创建: {path}\n请将其拖到UniversalDebugTool的Tab Button Prefab字段", "确定");
|
||||
}
|
||||
|
||||
[MenuItem("Tools/Debug Tool/手动创建自定义按钮预制件")]
|
||||
public static void CreateCustomButtonPrefab()
|
||||
{
|
||||
// 创建自定义按钮
|
||||
GameObject btn = new GameObject("CustomButtonPrefab");
|
||||
|
||||
RectTransform rt = btn.AddComponent<RectTransform>();
|
||||
rt.sizeDelta = new Vector2(200, 80);
|
||||
|
||||
Image img = btn.AddComponent<Image>();
|
||||
img.color = new Color(0.3f, 0.3f, 0.8f);
|
||||
|
||||
Button button = btn.AddComponent<Button>();
|
||||
button.targetGraphic = img;
|
||||
|
||||
// 添加文本
|
||||
GameObject textObj = new GameObject("Text");
|
||||
textObj.transform.SetParent(btn.transform, false);
|
||||
|
||||
RectTransform textRt = textObj.AddComponent<RectTransform>();
|
||||
textRt.anchorMin = Vector2.zero;
|
||||
textRt.anchorMax = Vector2.one;
|
||||
textRt.sizeDelta = Vector2.zero;
|
||||
textRt.offsetMin = new Vector2(10, 10);
|
||||
textRt.offsetMax = new Vector2(-10, -10);
|
||||
|
||||
TextMeshProUGUI text = textObj.AddComponent<TextMeshProUGUI>();
|
||||
text.text = "Button";
|
||||
text.fontSize = 24;
|
||||
text.alignment = TextAlignmentOptions.Center;
|
||||
text.color = Color.white;
|
||||
text.enableWordWrapping = true;
|
||||
|
||||
// 保存为预制件
|
||||
string path = "Assets/CustomButtonPrefab.prefab";
|
||||
PrefabUtility.SaveAsPrefabAsset(btn, path);
|
||||
|
||||
// 清理
|
||||
DestroyImmediate(btn);
|
||||
|
||||
// 选中
|
||||
Selection.activeObject = AssetDatabase.LoadAssetAtPath<GameObject>(path);
|
||||
|
||||
EditorUtility.DisplayDialog("成功", $"自定义按钮预制件已创建: {path}\n请将其拖到UniversalDebugTool的Button Prefab字段", "确定");
|
||||
}
|
||||
}
|
||||
11
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Editor/CreateTabButtonPrefab.cs.meta
vendored
Normal file
11
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Editor/CreateTabButtonPrefab.cs.meta
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 09b47930b7f0d1a46ad5443d47b1fcaf
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
127
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Editor/DebugToolDiagnostic.cs
vendored
Normal file
127
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Editor/DebugToolDiagnostic.cs
vendored
Normal file
@ -0,0 +1,127 @@
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
|
||||
/// <summary>
|
||||
/// 诊断UniversalDebugTool的引用问题
|
||||
/// </summary>
|
||||
public class DebugToolDiagnostic : EditorWindow
|
||||
{
|
||||
[MenuItem("Tools/Debug Tool/诊断引用问题")]
|
||||
public static void ShowWindow()
|
||||
{
|
||||
var window = GetWindow<DebugToolDiagnostic>("调试工具诊断");
|
||||
window.minSize = new Vector2(500, 400);
|
||||
window.Show();
|
||||
}
|
||||
|
||||
private UniversalDebugTool tool;
|
||||
private Vector2 scrollPos;
|
||||
|
||||
private void OnGUI()
|
||||
{
|
||||
GUILayout.Space(10);
|
||||
EditorGUILayout.LabelField("UniversalDebugTool 诊断工具", EditorStyles.boldLabel);
|
||||
EditorGUILayout.HelpBox("这个工具会检查调试工具的所有引用是否正确设置", MessageType.Info);
|
||||
|
||||
GUILayout.Space(10);
|
||||
tool = (UniversalDebugTool)EditorGUILayout.ObjectField("调试工具对象", tool, typeof(UniversalDebugTool), true);
|
||||
|
||||
GUILayout.Space(10);
|
||||
|
||||
if (tool == null)
|
||||
{
|
||||
EditorGUILayout.HelpBox("请从Hierarchy或Project中拖入UniversalDebugTool对象", MessageType.Warning);
|
||||
|
||||
if (GUILayout.Button("在场景中查找"))
|
||||
{
|
||||
tool = FindObjectOfType<UniversalDebugTool>();
|
||||
if (tool == null)
|
||||
{
|
||||
EditorUtility.DisplayDialog("未找到", "场景中没有UniversalDebugTool对象", "确定");
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
scrollPos = EditorGUILayout.BeginScrollView(scrollPos);
|
||||
|
||||
// 检查所有引用
|
||||
SerializedObject so = new SerializedObject(tool);
|
||||
|
||||
CheckReference(so, "mainWindow", "Main Window");
|
||||
CheckReference(so, "canvas", "Canvas");
|
||||
CheckReference(so, "tabButtonContainer", "Tab Button Container", true);
|
||||
CheckReference(so, "contentContainer", "Content Container");
|
||||
CheckReference(so, "tabButtonPrefab", "Tab Button Prefab", true);
|
||||
|
||||
EditorGUILayout.Space();
|
||||
EditorGUILayout.LabelField("页面引用", EditorStyles.boldLabel);
|
||||
CheckReference(so, "parametersPage", "Parameters Page");
|
||||
CheckReference(so, "customButtonsPage", "Custom Buttons Page");
|
||||
CheckReference(so, "settingsPage", "Settings Page");
|
||||
|
||||
EditorGUILayout.Space();
|
||||
EditorGUILayout.LabelField("参数页面组件", EditorStyles.boldLabel);
|
||||
CheckReference(so, "deviceInfoText", "Device Info Text");
|
||||
CheckReference(so, "systemInfoText", "System Info Text");
|
||||
|
||||
EditorGUILayout.Space();
|
||||
EditorGUILayout.LabelField("按钮页面组件", EditorStyles.boldLabel);
|
||||
CheckReference(so, "buttonContainer", "Button Container");
|
||||
CheckReference(so, "buttonPrefab", "Button Prefab", true);
|
||||
|
||||
EditorGUILayout.Space();
|
||||
EditorGUILayout.LabelField("设置页面组件", EditorStyles.boldLabel);
|
||||
CheckReference(so, "widthInputField", "Width Input Field");
|
||||
CheckReference(so, "heightInputField", "Height Input Field");
|
||||
CheckReference(so, "applyResolutionButton", "Apply Resolution Button");
|
||||
CheckReference(so, "resetResolutionButton", "Reset Resolution Button");
|
||||
CheckReference(so, "currentResolutionText", "Current Resolution Text");
|
||||
|
||||
EditorGUILayout.Space();
|
||||
EditorGUILayout.LabelField("输入对话框组件", EditorStyles.boldLabel);
|
||||
CheckReference(so, "inputDialog", "Input Dialog");
|
||||
CheckReference(so, "inputDialogTitle", "Input Dialog Title");
|
||||
CheckReference(so, "inputDialogInputField", "Input Dialog Input Field");
|
||||
CheckReference(so, "inputDialogConfirmBtn", "Input Dialog Confirm Button");
|
||||
CheckReference(so, "inputDialogCancelBtn", "Input Dialog Cancel Button");
|
||||
|
||||
EditorGUILayout.EndScrollView();
|
||||
|
||||
GUILayout.Space(10);
|
||||
|
||||
if (GUILayout.Button("重新生成预制件", GUILayout.Height(40)))
|
||||
{
|
||||
DebugToolPrefabGenerator.ShowWindow();
|
||||
}
|
||||
}
|
||||
|
||||
private void CheckReference(SerializedObject so, string propertyName, string displayName, bool critical = false)
|
||||
{
|
||||
SerializedProperty prop = so.FindProperty(propertyName);
|
||||
if (prop != null)
|
||||
{
|
||||
bool isNull = prop.objectReferenceValue == null;
|
||||
|
||||
GUIStyle style = new GUIStyle(EditorStyles.label);
|
||||
if (isNull)
|
||||
{
|
||||
if (critical)
|
||||
{
|
||||
style.normal.textColor = Color.red;
|
||||
EditorGUILayout.LabelField($"❌ {displayName}: 未设置 (必需)", style);
|
||||
}
|
||||
else
|
||||
{
|
||||
style.normal.textColor = new Color(1f, 0.5f, 0f);
|
||||
EditorGUILayout.LabelField($"⚠️ {displayName}: 未设置", style);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
style.normal.textColor = Color.green;
|
||||
EditorGUILayout.LabelField($"✅ {displayName}: {prop.objectReferenceValue.name}", style);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
11
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Editor/DebugToolDiagnostic.cs.meta
vendored
Normal file
11
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Editor/DebugToolDiagnostic.cs.meta
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 207ea43d8a1b48b4d82353ac89ef2933
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
975
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Editor/DebugToolPrefabGenerator.cs
vendored
Normal file
975
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Editor/DebugToolPrefabGenerator.cs
vendored
Normal file
@ -0,0 +1,975 @@
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using UnityEngine.UI;
|
||||
using TMPro;
|
||||
|
||||
/// <summary>
|
||||
/// 通用调试工具预制件生成器
|
||||
/// 用于创建UniversalDebugTool所需的完整UI预制件
|
||||
/// </summary>
|
||||
public class DebugToolPrefabGenerator : EditorWindow
|
||||
{
|
||||
private string prefabSavePath = "Assets/UniversalDebugTool.prefab";
|
||||
|
||||
[MenuItem("Tools/Debug Tool/生成调试工具预制件")]
|
||||
public static void ShowWindow()
|
||||
{
|
||||
var window = GetWindow<DebugToolPrefabGenerator>("调试工具预制件生成器");
|
||||
window.minSize = new Vector2(400, 300);
|
||||
window.Show();
|
||||
}
|
||||
|
||||
private void OnGUI()
|
||||
{
|
||||
GUILayout.Space(10);
|
||||
EditorGUILayout.LabelField("通用调试工具预制件生成器", EditorStyles.boldLabel);
|
||||
EditorGUILayout.HelpBox("这个工具将创建一个完整的调试工具UI预制件,包含所有必需的组件和布局。", MessageType.Info);
|
||||
|
||||
GUILayout.Space(10);
|
||||
EditorGUILayout.LabelField("保存路径:", EditorStyles.boldLabel);
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
prefabSavePath = EditorGUILayout.TextField(prefabSavePath);
|
||||
if (GUILayout.Button("浏览", GUILayout.Width(60)))
|
||||
{
|
||||
string path = EditorUtility.SaveFilePanelInProject("保存预制件", "UniversalDebugTool", "prefab", "选择保存位置");
|
||||
if (!string.IsNullOrEmpty(path))
|
||||
{
|
||||
prefabSavePath = path;
|
||||
}
|
||||
}
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
GUILayout.Space(20);
|
||||
|
||||
if (GUILayout.Button("生成预制件", GUILayout.Height(40)))
|
||||
{
|
||||
GeneratePrefab();
|
||||
}
|
||||
|
||||
GUILayout.Space(10);
|
||||
|
||||
EditorGUILayout.HelpBox(
|
||||
"生成后的预制件将包含:\n" +
|
||||
"• 主窗口 (1080x2340)\n" +
|
||||
"• 标签页系统\n" +
|
||||
"• 参数查看页面\n" +
|
||||
"• 自定义按钮页面\n" +
|
||||
"• 设置页面\n" +
|
||||
"• 输入对话框",
|
||||
MessageType.None);
|
||||
}
|
||||
|
||||
private void GeneratePrefab()
|
||||
{
|
||||
try
|
||||
{
|
||||
// 创建根对象
|
||||
GameObject root = new GameObject("UniversalDebugTool");
|
||||
|
||||
// 添加Canvas
|
||||
Canvas canvas = root.AddComponent<Canvas>();
|
||||
canvas.renderMode = RenderMode.ScreenSpaceOverlay;
|
||||
canvas.sortingOrder = 999; // 确保显示在最上层
|
||||
|
||||
CanvasScaler scaler = root.AddComponent<CanvasScaler>();
|
||||
scaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize;
|
||||
scaler.referenceResolution = new Vector2(1080, 2340);
|
||||
scaler.matchWidthOrHeight = 0.5f;
|
||||
|
||||
root.AddComponent<GraphicRaycaster>();
|
||||
|
||||
// 添加主组件
|
||||
UniversalDebugTool debugTool = root.AddComponent<UniversalDebugTool>();
|
||||
|
||||
// 创建主窗口
|
||||
GameObject mainWindow = CreateMainWindow(root.transform);
|
||||
|
||||
// 创建标签页容器
|
||||
GameObject tabContainer = CreateTabContainer(mainWindow.transform);
|
||||
|
||||
// 创建关闭按钮(在标签容器的最左边)
|
||||
GameObject closeButton = CreateCloseButton(tabContainer.transform);
|
||||
|
||||
// 创建内容容器
|
||||
GameObject contentContainer = CreateContentContainer(mainWindow.transform);
|
||||
|
||||
// 创建各个页面
|
||||
GameObject parametersPage = CreateParametersPage(contentContainer.transform);
|
||||
GameObject customButtonsPage = CreateCustomButtonsPage(contentContainer.transform);
|
||||
GameObject toolbarPage = CreateToolbarPage(contentContainer.transform);
|
||||
GameObject settingsPage = CreateSettingsPage(contentContainer.transform);
|
||||
|
||||
// 创建标签按钮预制件
|
||||
GameObject tabButtonPrefab = CreateTabButtonPrefab();
|
||||
|
||||
// 创建自定义按钮预制件
|
||||
GameObject customButtonPrefab = CreateCustomButtonPrefab();
|
||||
|
||||
// 创建输入对话框
|
||||
GameObject inputDialog = CreateInputDialog(mainWindow.transform);
|
||||
|
||||
// 创建悬浮按钮
|
||||
GameObject floatingButton = CreateFloatingButton(root.transform);
|
||||
|
||||
// 设置引用
|
||||
SetupReferences(debugTool, mainWindow, tabContainer, contentContainer,
|
||||
parametersPage, customButtonsPage, toolbarPage, settingsPage,
|
||||
tabButtonPrefab, customButtonPrefab, inputDialog, canvas,
|
||||
closeButton, floatingButton);
|
||||
|
||||
// 保存为预制件
|
||||
PrefabUtility.SaveAsPrefabAsset(root, prefabSavePath);
|
||||
|
||||
// 清理临时对象
|
||||
DestroyImmediate(root);
|
||||
DestroyImmediate(tabButtonPrefab);
|
||||
DestroyImmediate(customButtonPrefab);
|
||||
|
||||
AssetDatabase.Refresh();
|
||||
|
||||
EditorUtility.DisplayDialog("成功", $"预制件已生成: {prefabSavePath}", "确定");
|
||||
|
||||
// 选中生成的预制件
|
||||
Selection.activeObject = AssetDatabase.LoadAssetAtPath<GameObject>(prefabSavePath);
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
EditorUtility.DisplayDialog("错误", $"生成预制件时出错: {e.Message}", "确定");
|
||||
Debug.LogError(e);
|
||||
}
|
||||
}
|
||||
|
||||
private GameObject CreateMainWindow(Transform parent)
|
||||
{
|
||||
GameObject obj = new GameObject("MainWindow");
|
||||
obj.transform.SetParent(parent, false);
|
||||
|
||||
RectTransform rt = obj.AddComponent<RectTransform>();
|
||||
rt.sizeDelta = new Vector2(1080, 2340);
|
||||
// 锚点在左上角,确保在任何分辨率下都能看到顶部的tabbar
|
||||
rt.anchorMin = new Vector2(0, 1);
|
||||
rt.anchorMax = new Vector2(0, 1);
|
||||
rt.pivot = new Vector2(0, 1);
|
||||
rt.anchoredPosition = new Vector2(0, 0);
|
||||
|
||||
Image bg = obj.AddComponent<Image>();
|
||||
bg.color = new Color(0.1f, 0.1f, 0.1f, 0.95f);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
private GameObject CreateTabContainer(Transform parent)
|
||||
{
|
||||
GameObject obj = new GameObject("TabButtonContainer");
|
||||
obj.transform.SetParent(parent, false);
|
||||
|
||||
RectTransform rt = obj.AddComponent<RectTransform>();
|
||||
rt.anchorMin = new Vector2(0, 1);
|
||||
rt.anchorMax = new Vector2(1, 1);
|
||||
rt.pivot = new Vector2(0.5f, 1);
|
||||
rt.anchoredPosition = new Vector2(0, 0);
|
||||
rt.sizeDelta = new Vector2(0, 100);
|
||||
|
||||
HorizontalLayoutGroup layout = obj.AddComponent<HorizontalLayoutGroup>();
|
||||
layout.childControlWidth = false; // 改为false,让关闭按钮有固定宽度
|
||||
layout.childControlHeight = true;
|
||||
layout.childForceExpandWidth = false; // 改为false
|
||||
layout.childForceExpandHeight = true;
|
||||
layout.spacing = 10;
|
||||
layout.padding = new RectOffset(10, 10, 10, 10);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
private GameObject CreateCloseButton(Transform parent)
|
||||
{
|
||||
GameObject btn = new GameObject("CloseButton");
|
||||
btn.transform.SetParent(parent, false);
|
||||
|
||||
RectTransform rt = btn.AddComponent<RectTransform>();
|
||||
rt.sizeDelta = new Vector2(100, 80); // 固定宽度
|
||||
|
||||
LayoutElement layout = btn.AddComponent<LayoutElement>();
|
||||
layout.preferredWidth = 100;
|
||||
layout.flexibleWidth = 0;
|
||||
|
||||
Image img = btn.AddComponent<Image>();
|
||||
img.color = new Color(0.8f, 0.2f, 0.2f); // 红色
|
||||
|
||||
Button button = btn.AddComponent<Button>();
|
||||
button.targetGraphic = img;
|
||||
|
||||
GameObject textObj = new GameObject("Text");
|
||||
textObj.transform.SetParent(btn.transform, false);
|
||||
|
||||
RectTransform textRt = textObj.AddComponent<RectTransform>();
|
||||
textRt.anchorMin = Vector2.zero;
|
||||
textRt.anchorMax = Vector2.one;
|
||||
textRt.sizeDelta = Vector2.zero;
|
||||
|
||||
TextMeshProUGUI text = textObj.AddComponent<TextMeshProUGUI>();
|
||||
text.text = "✕";
|
||||
text.fontSize = 48;
|
||||
text.alignment = TextAlignmentOptions.Center;
|
||||
text.color = Color.white;
|
||||
|
||||
return btn;
|
||||
}
|
||||
|
||||
private GameObject CreateFloatingButton(Transform parent)
|
||||
{
|
||||
GameObject floatBtn = new GameObject("FloatingButton");
|
||||
floatBtn.transform.SetParent(parent, false);
|
||||
|
||||
RectTransform rt = floatBtn.AddComponent<RectTransform>();
|
||||
rt.sizeDelta = new Vector2(120, 120);
|
||||
// 使用中心锚点,确保拖动坐标系一致
|
||||
rt.anchorMin = new Vector2(0.5f, 0.5f);
|
||||
rt.anchorMax = new Vector2(0.5f, 0.5f);
|
||||
rt.pivot = new Vector2(0.5f, 0.5f);
|
||||
// 初始位置在右上角(Canvas中心坐标系)
|
||||
rt.anchoredPosition = new Vector2(470, 1100); // 对于1080x2340分辨率
|
||||
|
||||
Image img = floatBtn.AddComponent<Image>();
|
||||
img.color = new Color(0.2f, 0.7f, 0.3f, 0.9f); // 半透明绿色
|
||||
|
||||
Button button = floatBtn.AddComponent<Button>();
|
||||
button.targetGraphic = img;
|
||||
|
||||
// 添加可拖动组件
|
||||
DraggableFloatingButton draggable = floatBtn.AddComponent<DraggableFloatingButton>();
|
||||
draggable.clampToScreen = true;
|
||||
draggable.snapToEdge = true;
|
||||
draggable.edgePadding = 20f;
|
||||
draggable.snapDuration = 0.3f;
|
||||
|
||||
// 添加文本
|
||||
GameObject textObj = new GameObject("Text");
|
||||
textObj.transform.SetParent(floatBtn.transform, false);
|
||||
|
||||
RectTransform textRt = textObj.AddComponent<RectTransform>();
|
||||
textRt.anchorMin = Vector2.zero;
|
||||
textRt.anchorMax = Vector2.one;
|
||||
textRt.sizeDelta = Vector2.zero;
|
||||
|
||||
TextMeshProUGUI text = textObj.AddComponent<TextMeshProUGUI>();
|
||||
text.text = "DEBUG";
|
||||
text.fontSize = 24;
|
||||
text.alignment = TextAlignmentOptions.Center;
|
||||
text.color = Color.white;
|
||||
text.fontStyle = FontStyles.Bold;
|
||||
|
||||
// 默认隐藏
|
||||
floatBtn.SetActive(false);
|
||||
|
||||
return floatBtn;
|
||||
}
|
||||
|
||||
private GameObject CreateContentContainer(Transform parent)
|
||||
{
|
||||
GameObject obj = new GameObject("ContentContainer");
|
||||
obj.transform.SetParent(parent, false);
|
||||
|
||||
RectTransform rt = obj.AddComponent<RectTransform>();
|
||||
rt.anchorMin = new Vector2(0, 0);
|
||||
rt.anchorMax = new Vector2(1, 1);
|
||||
rt.pivot = new Vector2(0.5f, 0.5f);
|
||||
rt.offsetMin = new Vector2(20, 20);
|
||||
rt.offsetMax = new Vector2(-20, -120); // 为标签栏留空间
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
private GameObject CreateParametersPage(Transform parent)
|
||||
{
|
||||
GameObject page = new GameObject("ParametersPage");
|
||||
page.transform.SetParent(parent, false);
|
||||
|
||||
RectTransform rt = page.AddComponent<RectTransform>();
|
||||
rt.anchorMin = Vector2.zero;
|
||||
rt.anchorMax = Vector2.one;
|
||||
rt.sizeDelta = Vector2.zero;
|
||||
|
||||
// 创建ScrollView
|
||||
GameObject scrollView = new GameObject("ScrollView");
|
||||
scrollView.transform.SetParent(page.transform, false);
|
||||
|
||||
RectTransform scrollRt = scrollView.AddComponent<RectTransform>();
|
||||
scrollRt.anchorMin = Vector2.zero;
|
||||
scrollRt.anchorMax = Vector2.one;
|
||||
scrollRt.sizeDelta = Vector2.zero;
|
||||
|
||||
ScrollRect scroll = scrollView.AddComponent<ScrollRect>();
|
||||
scroll.horizontal = false;
|
||||
scroll.vertical = true;
|
||||
|
||||
// Viewport
|
||||
GameObject viewport = new GameObject("Viewport");
|
||||
viewport.transform.SetParent(scrollView.transform, false);
|
||||
RectTransform viewportRt = viewport.AddComponent<RectTransform>();
|
||||
viewportRt.anchorMin = Vector2.zero;
|
||||
viewportRt.anchorMax = Vector2.one;
|
||||
viewportRt.sizeDelta = Vector2.zero;
|
||||
viewport.AddComponent<RectMask2D>();
|
||||
|
||||
// Content
|
||||
GameObject content = new GameObject("Content");
|
||||
content.transform.SetParent(viewport.transform, false);
|
||||
RectTransform contentRt = content.AddComponent<RectTransform>();
|
||||
contentRt.anchorMin = new Vector2(0, 1);
|
||||
contentRt.anchorMax = new Vector2(1, 1);
|
||||
contentRt.pivot = new Vector2(0.5f, 1);
|
||||
contentRt.sizeDelta = new Vector2(0, 2000);
|
||||
|
||||
VerticalLayoutGroup vlg = content.AddComponent<VerticalLayoutGroup>();
|
||||
vlg.childControlWidth = true;
|
||||
vlg.childControlHeight = true;
|
||||
vlg.childForceExpandWidth = true;
|
||||
vlg.childForceExpandHeight = false;
|
||||
vlg.spacing = 20;
|
||||
vlg.padding = new RectOffset(20, 20, 20, 20);
|
||||
|
||||
ContentSizeFitter csf = content.AddComponent<ContentSizeFitter>();
|
||||
csf.verticalFit = ContentSizeFitter.FitMode.PreferredSize;
|
||||
|
||||
scroll.content = contentRt;
|
||||
scroll.viewport = viewportRt;
|
||||
|
||||
// 设备信息文本
|
||||
GameObject deviceInfo = CreateTextObject("DeviceInfoText", content.transform);
|
||||
deviceInfo.GetComponent<TextMeshProUGUI>().text = "设备信息将在这里显示";
|
||||
|
||||
// 系统信息文本
|
||||
GameObject systemInfo = CreateTextObject("SystemInfoText", content.transform);
|
||||
systemInfo.GetComponent<TextMeshProUGUI>().text = "系统信息将在这里显示";
|
||||
|
||||
return page;
|
||||
}
|
||||
|
||||
private GameObject CreateCustomButtonsPage(Transform parent)
|
||||
{
|
||||
GameObject page = new GameObject("CustomButtonsPage");
|
||||
page.transform.SetParent(parent, false);
|
||||
|
||||
RectTransform rt = page.AddComponent<RectTransform>();
|
||||
rt.anchorMin = Vector2.zero;
|
||||
rt.anchorMax = Vector2.one;
|
||||
rt.sizeDelta = Vector2.zero;
|
||||
|
||||
// 创建ScrollView
|
||||
GameObject scrollView = new GameObject("ScrollView");
|
||||
scrollView.transform.SetParent(page.transform, false);
|
||||
|
||||
RectTransform scrollRt = scrollView.AddComponent<RectTransform>();
|
||||
scrollRt.anchorMin = Vector2.zero;
|
||||
scrollRt.anchorMax = Vector2.one;
|
||||
scrollRt.sizeDelta = Vector2.zero;
|
||||
|
||||
ScrollRect scroll = scrollView.AddComponent<ScrollRect>();
|
||||
scroll.horizontal = false;
|
||||
scroll.vertical = true;
|
||||
|
||||
// Viewport
|
||||
GameObject viewport = new GameObject("Viewport");
|
||||
viewport.transform.SetParent(scrollView.transform, false);
|
||||
RectTransform viewportRt = viewport.AddComponent<RectTransform>();
|
||||
viewportRt.anchorMin = Vector2.zero;
|
||||
viewportRt.anchorMax = Vector2.one;
|
||||
viewportRt.sizeDelta = Vector2.zero;
|
||||
viewport.AddComponent<RectMask2D>();
|
||||
|
||||
// Content (按钮容器)
|
||||
GameObject buttonContainer = new GameObject("ButtonContainer");
|
||||
buttonContainer.transform.SetParent(viewport.transform, false);
|
||||
RectTransform contentRt = buttonContainer.AddComponent<RectTransform>();
|
||||
contentRt.anchorMin = new Vector2(0, 1);
|
||||
contentRt.anchorMax = new Vector2(1, 1);
|
||||
contentRt.pivot = new Vector2(0.5f, 1);
|
||||
contentRt.sizeDelta = new Vector2(0, 2000);
|
||||
|
||||
GridLayoutGroup grid = buttonContainer.AddComponent<GridLayoutGroup>();
|
||||
grid.cellSize = new Vector2(300, 80);
|
||||
grid.spacing = new Vector2(20, 20);
|
||||
grid.padding = new RectOffset(20, 20, 20, 20);
|
||||
grid.constraint = GridLayoutGroup.Constraint.FixedColumnCount;
|
||||
grid.constraintCount = 3;
|
||||
|
||||
ContentSizeFitter csf = buttonContainer.AddComponent<ContentSizeFitter>();
|
||||
csf.verticalFit = ContentSizeFitter.FitMode.PreferredSize;
|
||||
|
||||
scroll.content = contentRt;
|
||||
scroll.viewport = viewportRt;
|
||||
|
||||
return page;
|
||||
}
|
||||
|
||||
private GameObject CreateToolbarPage(Transform parent)
|
||||
{
|
||||
GameObject page = new GameObject("ToolbarPage");
|
||||
page.transform.SetParent(parent, false);
|
||||
|
||||
RectTransform rt = page.AddComponent<RectTransform>();
|
||||
rt.anchorMin = Vector2.zero;
|
||||
rt.anchorMax = Vector2.one;
|
||||
rt.sizeDelta = Vector2.zero;
|
||||
|
||||
// 内容容器
|
||||
GameObject content = new GameObject("Content");
|
||||
content.transform.SetParent(page.transform, false);
|
||||
RectTransform contentRt = content.AddComponent<RectTransform>();
|
||||
contentRt.anchorMin = new Vector2(0, 1);
|
||||
contentRt.anchorMax = new Vector2(1, 1);
|
||||
contentRt.pivot = new Vector2(0.5f, 1);
|
||||
contentRt.anchoredPosition = new Vector2(0, 0);
|
||||
contentRt.sizeDelta = new Vector2(0, 1500);
|
||||
|
||||
VerticalLayoutGroup vlg = content.AddComponent<VerticalLayoutGroup>();
|
||||
vlg.childControlWidth = true;
|
||||
vlg.childControlHeight = false;
|
||||
vlg.childForceExpandWidth = true;
|
||||
vlg.spacing = 40;
|
||||
vlg.padding = new RectOffset(50, 50, 50, 50);
|
||||
|
||||
// 标题
|
||||
GameObject title = CreateTextObject("Title", content.transform);
|
||||
TextMeshProUGUI titleText = title.GetComponent<TextMeshProUGUI>();
|
||||
titleText.text = "系统工具";
|
||||
titleText.fontSize = 48;
|
||||
titleText.alignment = TextAlignmentOptions.Center;
|
||||
titleText.fontStyle = FontStyles.Bold;
|
||||
LayoutElement titleLayout = title.AddComponent<LayoutElement>();
|
||||
titleLayout.preferredHeight = 80;
|
||||
|
||||
// 时间缩放控制
|
||||
GameObject timeScaleControl = CreateTimeScaleControl(content.transform);
|
||||
|
||||
// 可以在这里添加更多工具...
|
||||
|
||||
return page;
|
||||
}
|
||||
|
||||
private GameObject CreateTimeScaleControl(Transform parent)
|
||||
{
|
||||
// 主容器
|
||||
GameObject container = new GameObject("TimeAdjustControl");
|
||||
container.transform.SetParent(parent, false);
|
||||
|
||||
RectTransform containerRt = container.AddComponent<RectTransform>();
|
||||
|
||||
VerticalLayoutGroup vlg = container.AddComponent<VerticalLayoutGroup>();
|
||||
vlg.childControlWidth = true;
|
||||
vlg.childControlHeight = false;
|
||||
vlg.childForceExpandWidth = true;
|
||||
vlg.spacing = 20;
|
||||
vlg.padding = new RectOffset(20, 20, 20, 20);
|
||||
|
||||
Image bg = container.AddComponent<Image>();
|
||||
bg.color = new Color(0.15f, 0.15f, 0.2f, 0.8f);
|
||||
|
||||
LayoutElement containerLayout = container.AddComponent<LayoutElement>();
|
||||
containerLayout.preferredHeight = 400;
|
||||
|
||||
// 标题
|
||||
GameObject titleObj = CreateTextObject("Title", container.transform);
|
||||
TextMeshProUGUI titleText = titleObj.GetComponent<TextMeshProUGUI>();
|
||||
titleText.text = "时间调整工具";
|
||||
titleText.fontSize = 40;
|
||||
titleText.alignment = TextAlignmentOptions.Center;
|
||||
titleText.fontStyle = FontStyles.Bold;
|
||||
LayoutElement titleLayout = titleObj.AddComponent<LayoutElement>();
|
||||
titleLayout.preferredHeight = 60;
|
||||
|
||||
// 当前值显示
|
||||
GameObject valueObj = CreateTextObject("ValueText", container.transform);
|
||||
TextMeshProUGUI valueText = valueObj.GetComponent<TextMeshProUGUI>();
|
||||
valueText.text = "60秒";
|
||||
valueText.fontSize = 36;
|
||||
valueText.alignment = TextAlignmentOptions.Center;
|
||||
valueText.color = new Color(0.3f, 0.8f, 1f);
|
||||
LayoutElement valueLayout = valueObj.AddComponent<LayoutElement>();
|
||||
valueLayout.preferredHeight = 50;
|
||||
|
||||
// Slider
|
||||
GameObject sliderObj = new GameObject("Slider");
|
||||
sliderObj.transform.SetParent(container.transform, false);
|
||||
|
||||
RectTransform sliderRt = sliderObj.AddComponent<RectTransform>();
|
||||
|
||||
Slider slider = sliderObj.AddComponent<Slider>();
|
||||
slider.minValue = 1f; // 最小1秒
|
||||
slider.maxValue = 600f; // 最大600秒(10分钟)
|
||||
slider.value = 60f; // 默认60秒
|
||||
slider.wholeNumbers = true;
|
||||
|
||||
LayoutElement sliderLayout = sliderObj.AddComponent<LayoutElement>();
|
||||
sliderLayout.preferredHeight = 60;
|
||||
|
||||
// Background
|
||||
GameObject bg_obj = new GameObject("Background");
|
||||
bg_obj.transform.SetParent(sliderObj.transform, false);
|
||||
RectTransform bgRt = bg_obj.AddComponent<RectTransform>();
|
||||
bgRt.anchorMin = new Vector2(0, 0.25f);
|
||||
bgRt.anchorMax = new Vector2(1, 0.75f);
|
||||
bgRt.sizeDelta = Vector2.zero;
|
||||
Image bgImage = bg_obj.AddComponent<Image>();
|
||||
bgImage.color = new Color(0.2f, 0.2f, 0.2f);
|
||||
|
||||
// Fill Area
|
||||
GameObject fillArea = new GameObject("Fill Area");
|
||||
fillArea.transform.SetParent(sliderObj.transform, false);
|
||||
RectTransform fillAreaRt = fillArea.AddComponent<RectTransform>();
|
||||
fillAreaRt.anchorMin = new Vector2(0, 0.25f);
|
||||
fillAreaRt.anchorMax = new Vector2(1, 0.75f);
|
||||
fillAreaRt.sizeDelta = new Vector2(-20, 0);
|
||||
|
||||
// Fill
|
||||
GameObject fill = new GameObject("Fill");
|
||||
fill.transform.SetParent(fillArea.transform, false);
|
||||
RectTransform fillRt = fill.AddComponent<RectTransform>();
|
||||
fillRt.sizeDelta = Vector2.zero;
|
||||
Image fillImage = fill.AddComponent<Image>();
|
||||
fillImage.color = new Color(0.2f, 0.7f, 1f);
|
||||
fillImage.type = Image.Type.Filled;
|
||||
fillImage.fillMethod = Image.FillMethod.Horizontal;
|
||||
|
||||
slider.fillRect = fillRt;
|
||||
|
||||
// Handle Slide Area
|
||||
GameObject handleArea = new GameObject("Handle Slide Area");
|
||||
handleArea.transform.SetParent(sliderObj.transform, false);
|
||||
RectTransform handleAreaRt = handleArea.AddComponent<RectTransform>();
|
||||
handleAreaRt.anchorMin = new Vector2(0, 0);
|
||||
handleAreaRt.anchorMax = new Vector2(1, 1);
|
||||
handleAreaRt.sizeDelta = new Vector2(-20, 0);
|
||||
|
||||
// Handle
|
||||
GameObject handle = new GameObject("Handle");
|
||||
handle.transform.SetParent(handleArea.transform, false);
|
||||
RectTransform handleRt = handle.AddComponent<RectTransform>();
|
||||
handleRt.sizeDelta = new Vector2(40, 0);
|
||||
Image handleImage = handle.AddComponent<Image>();
|
||||
handleImage.color = new Color(1f, 1f, 1f);
|
||||
|
||||
slider.handleRect = handleRt;
|
||||
slider.targetGraphic = handleImage;
|
||||
|
||||
// 说明文字
|
||||
GameObject descObj = CreateTextObject("Description", container.transform);
|
||||
TextMeshProUGUI descText = descObj.GetComponent<TextMeshProUGUI>();
|
||||
descText.text = "拖动设置时间量(1秒 - 10分钟)";
|
||||
descText.fontSize = 28;
|
||||
descText.alignment = TextAlignmentOptions.Center;
|
||||
descText.color = new Color(0.7f, 0.7f, 0.7f);
|
||||
LayoutElement descLayout = descObj.AddComponent<LayoutElement>();
|
||||
descLayout.preferredHeight = 40;
|
||||
|
||||
// 按钮容器
|
||||
GameObject buttonContainer = new GameObject("ButtonContainer");
|
||||
buttonContainer.transform.SetParent(container.transform, false);
|
||||
|
||||
HorizontalLayoutGroup hlg = buttonContainer.AddComponent<HorizontalLayoutGroup>();
|
||||
hlg.spacing = 30;
|
||||
hlg.childControlWidth = true;
|
||||
hlg.childControlHeight = true;
|
||||
hlg.childForceExpandWidth = true;
|
||||
|
||||
LayoutElement btnContainerLayout = buttonContainer.AddComponent<LayoutElement>();
|
||||
btnContainerLayout.preferredHeight = 100;
|
||||
|
||||
// 增加时间按钮
|
||||
GameObject increaseBtn = CreateButton("IncreaseButton", "增加时间 ▲", buttonContainer.transform);
|
||||
increaseBtn.GetComponent<Image>().color = new Color(0.2f, 0.8f, 0.3f);
|
||||
|
||||
// 减少时间按钮
|
||||
GameObject decreaseBtn = CreateButton("DecreaseButton", "减少时间 ▼", buttonContainer.transform);
|
||||
decreaseBtn.GetComponent<Image>().color = new Color(0.8f, 0.3f, 0.2f);
|
||||
|
||||
return container;
|
||||
}
|
||||
|
||||
private GameObject CreateSettingsPage(Transform parent)
|
||||
{
|
||||
GameObject page = new GameObject("SettingsPage");
|
||||
page.transform.SetParent(parent, false);
|
||||
|
||||
RectTransform rt = page.AddComponent<RectTransform>();
|
||||
rt.anchorMin = Vector2.zero;
|
||||
rt.anchorMax = Vector2.one;
|
||||
rt.sizeDelta = Vector2.zero;
|
||||
|
||||
// 内容容器
|
||||
GameObject content = new GameObject("Content");
|
||||
content.transform.SetParent(page.transform, false);
|
||||
RectTransform contentRt = content.AddComponent<RectTransform>();
|
||||
contentRt.anchorMin = new Vector2(0, 1);
|
||||
contentRt.anchorMax = new Vector2(1, 1);
|
||||
contentRt.pivot = new Vector2(0.5f, 1);
|
||||
contentRt.sizeDelta = new Vector2(0, 800);
|
||||
|
||||
VerticalLayoutGroup vlg = content.AddComponent<VerticalLayoutGroup>();
|
||||
vlg.childControlWidth = true;
|
||||
vlg.childControlHeight = false;
|
||||
vlg.childForceExpandWidth = true;
|
||||
vlg.spacing = 30;
|
||||
vlg.padding = new RectOffset(50, 50, 50, 50);
|
||||
|
||||
// 标题
|
||||
GameObject title = CreateTextObject("Title", content.transform);
|
||||
TextMeshProUGUI titleText = title.GetComponent<TextMeshProUGUI>();
|
||||
titleText.text = "窗口尺寸设置";
|
||||
titleText.fontSize = 48;
|
||||
titleText.alignment = TextAlignmentOptions.Center;
|
||||
LayoutElement titleLayout = title.AddComponent<LayoutElement>();
|
||||
titleLayout.preferredHeight = 80;
|
||||
|
||||
// 当前分辨率显示
|
||||
GameObject currentRes = CreateTextObject("CurrentResolutionText", content.transform);
|
||||
TextMeshProUGUI currentResText = currentRes.GetComponent<TextMeshProUGUI>();
|
||||
currentResText.text = "当前窗口尺寸: 1080 x 2340";
|
||||
currentResText.fontSize = 36;
|
||||
currentResText.alignment = TextAlignmentOptions.Center;
|
||||
LayoutElement currentResLayout = currentRes.AddComponent<LayoutElement>();
|
||||
currentResLayout.preferredHeight = 60;
|
||||
|
||||
// 宽度输入
|
||||
GameObject widthField = CreateInputField("WidthInputField", "宽度", content.transform);
|
||||
widthField.GetComponentInChildren<TMP_InputField>().text = "1080";
|
||||
|
||||
// 高度输入
|
||||
GameObject heightField = CreateInputField("HeightInputField", "高度", content.transform);
|
||||
heightField.GetComponentInChildren<TMP_InputField>().text = "2340";
|
||||
|
||||
// 按钮容器
|
||||
GameObject buttonContainer = new GameObject("ButtonContainer");
|
||||
buttonContainer.transform.SetParent(content.transform, false);
|
||||
RectTransform btnContainerRt = buttonContainer.AddComponent<RectTransform>();
|
||||
|
||||
HorizontalLayoutGroup hlg = buttonContainer.AddComponent<HorizontalLayoutGroup>();
|
||||
hlg.spacing = 30;
|
||||
hlg.childControlWidth = true;
|
||||
hlg.childControlHeight = true;
|
||||
hlg.childForceExpandWidth = true;
|
||||
|
||||
LayoutElement btnContainerLayout = buttonContainer.AddComponent<LayoutElement>();
|
||||
btnContainerLayout.preferredHeight = 100;
|
||||
|
||||
// 应用按钮
|
||||
GameObject applyBtn = CreateButton("ApplyResolutionButton", "应用", buttonContainer.transform);
|
||||
applyBtn.GetComponent<Image>().color = new Color(0.2f, 0.8f, 0.2f);
|
||||
|
||||
// 重置按钮
|
||||
GameObject resetBtn = CreateButton("ResetResolutionButton", "重置", buttonContainer.transform);
|
||||
resetBtn.GetComponent<Image>().color = new Color(0.8f, 0.5f, 0.2f);
|
||||
|
||||
return page;
|
||||
}
|
||||
|
||||
private GameObject CreateTabButtonPrefab()
|
||||
{
|
||||
GameObject btn = new GameObject("TabButtonPrefab");
|
||||
|
||||
RectTransform rt = btn.AddComponent<RectTransform>();
|
||||
rt.sizeDelta = new Vector2(200, 80);
|
||||
|
||||
Image img = btn.AddComponent<Image>();
|
||||
img.color = Color.gray;
|
||||
|
||||
Button button = btn.AddComponent<Button>();
|
||||
button.targetGraphic = img;
|
||||
|
||||
GameObject textObj = new GameObject("Text");
|
||||
textObj.transform.SetParent(btn.transform, false);
|
||||
|
||||
RectTransform textRt = textObj.AddComponent<RectTransform>();
|
||||
textRt.anchorMin = Vector2.zero;
|
||||
textRt.anchorMax = Vector2.one;
|
||||
textRt.sizeDelta = Vector2.zero;
|
||||
|
||||
TextMeshProUGUI text = textObj.AddComponent<TextMeshProUGUI>();
|
||||
text.text = "Tab";
|
||||
text.fontSize = 32;
|
||||
text.alignment = TextAlignmentOptions.Center;
|
||||
text.color = Color.white;
|
||||
|
||||
return btn;
|
||||
}
|
||||
|
||||
private GameObject CreateCustomButtonPrefab()
|
||||
{
|
||||
GameObject btn = new GameObject("CustomButtonPrefab");
|
||||
|
||||
RectTransform rt = btn.AddComponent<RectTransform>();
|
||||
rt.sizeDelta = new Vector2(200, 80);
|
||||
|
||||
Image img = btn.AddComponent<Image>();
|
||||
img.color = new Color(0.3f, 0.3f, 0.8f);
|
||||
|
||||
Button button = btn.AddComponent<Button>();
|
||||
button.targetGraphic = img;
|
||||
|
||||
GameObject textObj = new GameObject("Text");
|
||||
textObj.transform.SetParent(btn.transform, false);
|
||||
|
||||
RectTransform textRt = textObj.AddComponent<RectTransform>();
|
||||
textRt.anchorMin = Vector2.zero;
|
||||
textRt.anchorMax = Vector2.one;
|
||||
textRt.sizeDelta = Vector2.zero;
|
||||
textRt.offsetMin = new Vector2(10, 10);
|
||||
textRt.offsetMax = new Vector2(-10, -10);
|
||||
|
||||
TextMeshProUGUI text = textObj.AddComponent<TextMeshProUGUI>();
|
||||
text.text = "Button";
|
||||
text.fontSize = 24;
|
||||
text.alignment = TextAlignmentOptions.Center;
|
||||
text.color = Color.white;
|
||||
text.enableWordWrapping = true;
|
||||
|
||||
return btn;
|
||||
}
|
||||
|
||||
private GameObject CreateInputDialog(Transform parent)
|
||||
{
|
||||
GameObject dialog = new GameObject("InputDialog");
|
||||
dialog.transform.SetParent(parent, false);
|
||||
|
||||
RectTransform rt = dialog.AddComponent<RectTransform>();
|
||||
rt.anchorMin = Vector2.zero;
|
||||
rt.anchorMax = Vector2.one;
|
||||
rt.sizeDelta = Vector2.zero;
|
||||
|
||||
// 背景遮罩
|
||||
Image bg = dialog.AddComponent<Image>();
|
||||
bg.color = new Color(0, 0, 0, 0.7f);
|
||||
|
||||
// 对话框面板
|
||||
GameObject panel = new GameObject("Panel");
|
||||
panel.transform.SetParent(dialog.transform, false);
|
||||
|
||||
RectTransform panelRt = panel.AddComponent<RectTransform>();
|
||||
panelRt.sizeDelta = new Vector2(700, 500);
|
||||
panelRt.anchorMin = new Vector2(0.5f, 0.5f);
|
||||
panelRt.anchorMax = new Vector2(0.5f, 0.5f);
|
||||
panelRt.pivot = new Vector2(0.5f, 0.5f);
|
||||
|
||||
Image panelBg = panel.AddComponent<Image>();
|
||||
panelBg.color = new Color(0.2f, 0.2f, 0.2f);
|
||||
|
||||
VerticalLayoutGroup vlg = panel.AddComponent<VerticalLayoutGroup>();
|
||||
vlg.spacing = 20;
|
||||
vlg.padding = new RectOffset(30, 30, 30, 30);
|
||||
vlg.childControlWidth = true;
|
||||
vlg.childControlHeight = false;
|
||||
vlg.childForceExpandWidth = true;
|
||||
|
||||
// 标题
|
||||
GameObject title = CreateTextObject("Title", panel.transform);
|
||||
TextMeshProUGUI titleText = title.GetComponent<TextMeshProUGUI>();
|
||||
titleText.text = "输入";
|
||||
titleText.fontSize = 40;
|
||||
titleText.alignment = TextAlignmentOptions.Center;
|
||||
LayoutElement titleLayout = title.AddComponent<LayoutElement>();
|
||||
titleLayout.preferredHeight = 60;
|
||||
|
||||
// 输入框
|
||||
GameObject inputFieldObj = CreateInputField("InputField", "请输入...", panel.transform);
|
||||
LayoutElement inputLayout = inputFieldObj.AddComponent<LayoutElement>();
|
||||
inputLayout.preferredHeight = 100;
|
||||
|
||||
// 按钮容器
|
||||
GameObject btnContainer = new GameObject("ButtonContainer");
|
||||
btnContainer.transform.SetParent(panel.transform, false);
|
||||
|
||||
HorizontalLayoutGroup hlg = btnContainer.AddComponent<HorizontalLayoutGroup>();
|
||||
hlg.spacing = 20;
|
||||
hlg.childControlWidth = true;
|
||||
hlg.childControlHeight = true;
|
||||
hlg.childForceExpandWidth = true;
|
||||
|
||||
LayoutElement btnContainerLayout = btnContainer.AddComponent<LayoutElement>();
|
||||
btnContainerLayout.preferredHeight = 100;
|
||||
|
||||
// 确认按钮
|
||||
GameObject confirmBtn = CreateButton("ConfirmButton", "确认", btnContainer.transform);
|
||||
confirmBtn.GetComponent<Image>().color = new Color(0.2f, 0.8f, 0.2f);
|
||||
|
||||
// 取消按钮
|
||||
GameObject cancelBtn = CreateButton("CancelButton", "取消", btnContainer.transform);
|
||||
cancelBtn.GetComponent<Image>().color = new Color(0.8f, 0.3f, 0.3f);
|
||||
|
||||
dialog.SetActive(false);
|
||||
|
||||
return dialog;
|
||||
}
|
||||
|
||||
private GameObject CreateTextObject(string name, Transform parent)
|
||||
{
|
||||
GameObject obj = new GameObject(name);
|
||||
obj.transform.SetParent(parent, false);
|
||||
|
||||
RectTransform rt = obj.AddComponent<RectTransform>();
|
||||
rt.sizeDelta = new Vector2(800, 200);
|
||||
|
||||
TextMeshProUGUI text = obj.AddComponent<TextMeshProUGUI>();
|
||||
text.fontSize = 28;
|
||||
text.color = Color.white;
|
||||
text.enableWordWrapping = true;
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
private GameObject CreateButton(string name, string label, Transform parent)
|
||||
{
|
||||
GameObject btn = new GameObject(name);
|
||||
btn.transform.SetParent(parent, false);
|
||||
|
||||
RectTransform rt = btn.AddComponent<RectTransform>();
|
||||
rt.sizeDelta = new Vector2(200, 80);
|
||||
|
||||
Image img = btn.AddComponent<Image>();
|
||||
img.color = new Color(0.3f, 0.3f, 0.8f);
|
||||
|
||||
Button button = btn.AddComponent<Button>();
|
||||
button.targetGraphic = img;
|
||||
|
||||
GameObject textObj = new GameObject("Text");
|
||||
textObj.transform.SetParent(btn.transform, false);
|
||||
|
||||
RectTransform textRt = textObj.AddComponent<RectTransform>();
|
||||
textRt.anchorMin = Vector2.zero;
|
||||
textRt.anchorMax = Vector2.one;
|
||||
textRt.sizeDelta = Vector2.zero;
|
||||
|
||||
TextMeshProUGUI text = textObj.AddComponent<TextMeshProUGUI>();
|
||||
text.text = label;
|
||||
text.fontSize = 32;
|
||||
text.alignment = TextAlignmentOptions.Center;
|
||||
text.color = Color.white;
|
||||
|
||||
return btn;
|
||||
}
|
||||
|
||||
private GameObject CreateInputField(string name, string placeholder, Transform parent)
|
||||
{
|
||||
GameObject inputFieldObj = new GameObject(name);
|
||||
inputFieldObj.transform.SetParent(parent, false);
|
||||
|
||||
RectTransform rt = inputFieldObj.AddComponent<RectTransform>();
|
||||
rt.sizeDelta = new Vector2(600, 80);
|
||||
|
||||
Image bg = inputFieldObj.AddComponent<Image>();
|
||||
bg.color = new Color(0.15f, 0.15f, 0.15f);
|
||||
|
||||
TMP_InputField inputField = inputFieldObj.AddComponent<TMP_InputField>();
|
||||
|
||||
// Text Area
|
||||
GameObject textArea = new GameObject("TextArea");
|
||||
textArea.transform.SetParent(inputFieldObj.transform, false);
|
||||
RectTransform textAreaRt = textArea.AddComponent<RectTransform>();
|
||||
textAreaRt.anchorMin = Vector2.zero;
|
||||
textAreaRt.anchorMax = Vector2.one;
|
||||
textAreaRt.sizeDelta = Vector2.zero;
|
||||
textAreaRt.offsetMin = new Vector2(10, 5);
|
||||
textAreaRt.offsetMax = new Vector2(-10, -5);
|
||||
|
||||
RectMask2D mask = textArea.AddComponent<RectMask2D>();
|
||||
|
||||
// Placeholder
|
||||
GameObject placeholderObj = new GameObject("Placeholder");
|
||||
placeholderObj.transform.SetParent(textArea.transform, false);
|
||||
RectTransform placeholderRt = placeholderObj.AddComponent<RectTransform>();
|
||||
placeholderRt.anchorMin = Vector2.zero;
|
||||
placeholderRt.anchorMax = Vector2.one;
|
||||
placeholderRt.sizeDelta = Vector2.zero;
|
||||
|
||||
TextMeshProUGUI placeholderText = placeholderObj.AddComponent<TextMeshProUGUI>();
|
||||
placeholderText.text = placeholder;
|
||||
placeholderText.fontSize = 28;
|
||||
placeholderText.color = new Color(0.5f, 0.5f, 0.5f);
|
||||
placeholderText.fontStyle = FontStyles.Italic;
|
||||
|
||||
// Text
|
||||
GameObject textObj = new GameObject("Text");
|
||||
textObj.transform.SetParent(textArea.transform, false);
|
||||
RectTransform textRt = textObj.AddComponent<RectTransform>();
|
||||
textRt.anchorMin = Vector2.zero;
|
||||
textRt.anchorMax = Vector2.one;
|
||||
textRt.sizeDelta = Vector2.zero;
|
||||
|
||||
TextMeshProUGUI text = textObj.AddComponent<TextMeshProUGUI>();
|
||||
text.text = "";
|
||||
text.fontSize = 28;
|
||||
text.color = Color.white;
|
||||
|
||||
inputField.textViewport = textAreaRt;
|
||||
inputField.textComponent = text;
|
||||
inputField.placeholder = placeholderText;
|
||||
|
||||
return inputFieldObj;
|
||||
}
|
||||
|
||||
private void SetupReferences(UniversalDebugTool tool, GameObject mainWindow,
|
||||
GameObject tabContainer, GameObject contentContainer, GameObject parametersPage,
|
||||
GameObject customButtonsPage, GameObject toolbarPage, GameObject settingsPage,
|
||||
GameObject tabButtonPrefab, GameObject customButtonPrefab, GameObject inputDialog,
|
||||
Canvas canvas, GameObject closeButton, GameObject floatingButton)
|
||||
{
|
||||
var so = new SerializedObject(tool);
|
||||
|
||||
so.FindProperty("mainWindow").objectReferenceValue = mainWindow.GetComponent<RectTransform>();
|
||||
so.FindProperty("canvas").objectReferenceValue = canvas;
|
||||
so.FindProperty("tabButtonContainer").objectReferenceValue = tabContainer.GetComponent<RectTransform>();
|
||||
so.FindProperty("contentContainer").objectReferenceValue = contentContainer.GetComponent<RectTransform>();
|
||||
so.FindProperty("tabButtonPrefab").objectReferenceValue = tabButtonPrefab;
|
||||
so.FindProperty("closeButton").objectReferenceValue = closeButton.GetComponent<Button>();
|
||||
so.FindProperty("floatingButton").objectReferenceValue = floatingButton;
|
||||
so.FindProperty("draggableComponent").objectReferenceValue = floatingButton.GetComponent<DraggableFloatingButton>();
|
||||
|
||||
// 参数页面
|
||||
so.FindProperty("parametersPage").objectReferenceValue = parametersPage;
|
||||
var deviceInfoText = parametersPage.transform.Find("ScrollView/Viewport/Content/DeviceInfoText")?.GetComponent<TextMeshProUGUI>();
|
||||
var systemInfoText = parametersPage.transform.Find("ScrollView/Viewport/Content/SystemInfoText")?.GetComponent<TextMeshProUGUI>();
|
||||
so.FindProperty("deviceInfoText").objectReferenceValue = deviceInfoText;
|
||||
so.FindProperty("systemInfoText").objectReferenceValue = systemInfoText;
|
||||
so.FindProperty("parametersScrollRect").objectReferenceValue = parametersPage.GetComponentInChildren<ScrollRect>();
|
||||
|
||||
// 自定义按钮页面
|
||||
so.FindProperty("customButtonsPage").objectReferenceValue = customButtonsPage;
|
||||
so.FindProperty("buttonContainer").objectReferenceValue = customButtonsPage.transform.Find("ScrollView/Viewport/ButtonContainer")?.GetComponent<RectTransform>();
|
||||
so.FindProperty("buttonPrefab").objectReferenceValue = customButtonPrefab;
|
||||
so.FindProperty("buttonsScrollRect").objectReferenceValue = customButtonsPage.GetComponentInChildren<ScrollRect>();
|
||||
|
||||
// 工具栏页面
|
||||
so.FindProperty("toolbarPage").objectReferenceValue = toolbarPage;
|
||||
var timeAdjustSlider = toolbarPage.transform.Find("Content/TimeAdjustControl/Slider")?.GetComponent<Slider>();
|
||||
var timeAdjustValueText = toolbarPage.transform.Find("Content/TimeAdjustControl/ValueText")?.GetComponent<TextMeshProUGUI>();
|
||||
var timeIncreaseButton = toolbarPage.transform.Find("Content/TimeAdjustControl/ButtonContainer/IncreaseButton")?.GetComponent<Button>();
|
||||
var timeDecreaseButton = toolbarPage.transform.Find("Content/TimeAdjustControl/ButtonContainer/DecreaseButton")?.GetComponent<Button>();
|
||||
so.FindProperty("timeAdjustSlider").objectReferenceValue = timeAdjustSlider;
|
||||
so.FindProperty("timeAdjustValueText").objectReferenceValue = timeAdjustValueText;
|
||||
so.FindProperty("timeIncreaseButton").objectReferenceValue = timeIncreaseButton;
|
||||
so.FindProperty("timeDecreaseButton").objectReferenceValue = timeDecreaseButton;
|
||||
|
||||
// 设置页面
|
||||
so.FindProperty("settingsPage").objectReferenceValue = settingsPage;
|
||||
var widthField = settingsPage.transform.Find("Content/WidthInputField")?.GetComponentInChildren<TMP_InputField>();
|
||||
var heightField = settingsPage.transform.Find("Content/HeightInputField")?.GetComponentInChildren<TMP_InputField>();
|
||||
var currentResText = settingsPage.transform.Find("Content/CurrentResolutionText")?.GetComponent<TextMeshProUGUI>();
|
||||
var applyBtn = settingsPage.transform.Find("Content/ButtonContainer/ApplyResolutionButton")?.GetComponent<Button>();
|
||||
var resetBtn = settingsPage.transform.Find("Content/ButtonContainer/ResetResolutionButton")?.GetComponent<Button>();
|
||||
|
||||
so.FindProperty("widthInputField").objectReferenceValue = widthField;
|
||||
so.FindProperty("heightInputField").objectReferenceValue = heightField;
|
||||
so.FindProperty("currentResolutionText").objectReferenceValue = currentResText;
|
||||
so.FindProperty("applyResolutionButton").objectReferenceValue = applyBtn;
|
||||
so.FindProperty("resetResolutionButton").objectReferenceValue = resetBtn;
|
||||
|
||||
// 输入对话框
|
||||
so.FindProperty("inputDialog").objectReferenceValue = inputDialog;
|
||||
so.FindProperty("inputDialogTitle").objectReferenceValue = inputDialog.transform.Find("Panel/Title")?.GetComponent<TextMeshProUGUI>();
|
||||
so.FindProperty("inputDialogInputField").objectReferenceValue = inputDialog.transform.Find("Panel/InputField")?.GetComponentInChildren<TMP_InputField>();
|
||||
so.FindProperty("inputDialogConfirmBtn").objectReferenceValue = inputDialog.transform.Find("Panel/ButtonContainer/ConfirmButton")?.GetComponent<Button>();
|
||||
so.FindProperty("inputDialogCancelBtn").objectReferenceValue = inputDialog.transform.Find("Panel/ButtonContainer/CancelButton")?.GetComponent<Button>();
|
||||
|
||||
so.ApplyModifiedProperties();
|
||||
}
|
||||
}
|
||||
11
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Editor/DebugToolPrefabGenerator.cs.meta
vendored
Normal file
11
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Editor/DebugToolPrefabGenerator.cs.meta
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ab355a91334847f45aa2fe391a061474
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
19
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Editor/Hontbei.Meowmentdebugtool.Editor.asmdef
vendored
Normal file
19
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Editor/Hontbei.Meowmentdebugtool.Editor.asmdef
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
{
|
||||
"name": "Hontbei.Meowmentdebugtool.Editor",
|
||||
"rootNamespace": "",
|
||||
"references": [
|
||||
"Hontbei.Meowmentdebugtool",
|
||||
"Unity.TextMeshPro"
|
||||
],
|
||||
"includePlatforms": [
|
||||
"Editor"
|
||||
],
|
||||
"excludePlatforms": [],
|
||||
"allowUnsafeCode": false,
|
||||
"overrideReferences": false,
|
||||
"precompiledReferences": [],
|
||||
"autoReferenced": true,
|
||||
"defineConstraints": [],
|
||||
"versionDefines": [],
|
||||
"noEngineReferences": false
|
||||
}
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3672213eff4fbe048ae6efde3d783518
|
||||
AssemblyDefinitionImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
216
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/README.md
vendored
Normal file
216
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/README.md
vendored
Normal file
@ -0,0 +1,216 @@
|
||||
# MeowMent Debug Tool(通用调试工具)
|
||||
|
||||
一个面向运行时的 Unity 调试工具,内置多标签页调试面板、可拖拽悬浮按钮、设备/系统信息查看,以及通过特性自动生成的“自定义调试按钮”。
|
||||
|
||||
核心脚本:
|
||||
|
||||
- `Runtime/UniversalDebugTool.cs`
|
||||
- `Runtime/DraggableFloatingButton.cs`
|
||||
- `Editor/DebugToolPrefabGenerator.cs`
|
||||
- `Editor/CreateTabButtonPrefab.cs`
|
||||
|
||||
---
|
||||
|
||||
## 功能概览
|
||||
|
||||
- 多标签页调试面板(默认分辨率 1080x2340):
|
||||
- 参数:设备信息、系统信息,一键复制到剪贴板。
|
||||
- 自定义按钮:通过特性自动收集项目中的调试方法并生成按钮。
|
||||
- 工具栏:简单的“时间调整”示例入口,可按项目需要扩展。
|
||||
- 设置:运行时修改调试窗口尺寸、重置为默认分辨率。
|
||||
- 悬浮调试按钮:
|
||||
- 关闭主窗口后,会显示一个可拖拽、自动吸附边缘的浮动按钮。
|
||||
- 点击可再次打开调试主窗口,拖动不会误触打开(内部做了拖拽判定)。
|
||||
- 运行时公共 API:
|
||||
- `UniversalDebugTool.Show() / Hide() / Toggle()` 控制显示。
|
||||
- `UniversalDebugTool.ShowInputDialog(...)` 弹出输入对话框。
|
||||
- `UniversalDebugTool.Instance.ReloadCustomButtons()` 重新扫描并生成自定义按钮。
|
||||
|
||||
---
|
||||
|
||||
## 安装
|
||||
|
||||
### 方式一:本地拷贝(推荐在开发环境使用)
|
||||
|
||||
1. 将 `com.bywaystudios.meowmentdebugtool@0.1.4` 整个文件夹放到你项目的 `Packages/` 目录下。
|
||||
2. 打开 Unity,等待重新导入即可在菜单中看到调试工具相关项。
|
||||
|
||||
### 方式二:通过自建 Git / 私有仓库
|
||||
|
||||
如果你已经把此包发布到自己的 Git 仓库或私有 Package Registry,可参考 Unity 官方文档,通过修改 `Packages/manifest.json` 的 `dependencies` / `scopedRegistries` 来添加:
|
||||
|
||||
```jsonc
|
||||
"dependencies": {
|
||||
"com.bywaystudios.meowmentdebugtool": "0.1.4"
|
||||
}
|
||||
```
|
||||
|
||||
> 具体部署方式视团队实际环境而定,这里不展开。
|
||||
|
||||
---
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 1. 在场景中生成调试工具预制体
|
||||
|
||||
在 Unity 菜单中执行:
|
||||
|
||||
> Tools → Debug Tool → 生成调试工具预制件
|
||||
|
||||
在弹窗中选择保存路径(默认:`Assets/UniversalDebugTool.prefab`),点击“生成预制件”。
|
||||
|
||||
生成后的预制体包含:
|
||||
|
||||
- 一个独立的 `Canvas`(UI 根节点,排序顺序很高,保证在最上层渲染)。
|
||||
- `UniversalDebugTool` 主组件和其所需的 UI 层级。
|
||||
- 主调试窗口(含标签页、参数页、自定义按钮页、工具栏页、设置页)。
|
||||
- 可拖拽的调试悬浮按钮。
|
||||
|
||||
### 2. 把预制体放入场景
|
||||
|
||||
1. 在 Project 窗口中找到生成的 `UniversalDebugTool` 预制体。
|
||||
2. 将其拖入需要调试的场景(建议放到常驻/启动场景里)。
|
||||
3. 进入 Play 模式即可看到调试窗口。
|
||||
|
||||
默认行为:
|
||||
|
||||
- 进入游戏即显示主调试窗口,并隐藏悬浮按钮。
|
||||
- 点击顶部左侧关闭按钮,会隐藏主窗口并显示悬浮按钮。
|
||||
- 拖动悬浮按钮改变位置;点击一次可重新打开主窗口。
|
||||
|
||||
---
|
||||
|
||||
## 自定义调试按钮
|
||||
|
||||
调试工具会在运行时通过反射扫描所有程序集,查找带有 `DebugButtonAttribute` 特性的方法,并在“自定义按钮”标签页中为其自动生成一个按钮。
|
||||
|
||||
### 编写一个自定义调试方法
|
||||
|
||||
> 要求:
|
||||
> - 方法必须是 `static`。
|
||||
> - 当前实现假定为**无参数**方法。如果需要参数,可结合 `ShowInputDialog` 自行封装。
|
||||
|
||||
示例:
|
||||
|
||||
```csharp
|
||||
using UnityEngine;
|
||||
|
||||
public static class DemoDebugActions
|
||||
{
|
||||
// 在“自定义按钮”页中会生成一个名为“打印金币数量”的按钮
|
||||
[DebugButton("打印金币数量", 0.3f, 0.6f, 1f)]
|
||||
private static void PrintCoinCount()
|
||||
{
|
||||
Debug.Log($"Coins: {PlayerData.Coin}");
|
||||
}
|
||||
|
||||
// 不传 displayName 时,按钮文字默认使用方法名
|
||||
[DebugButton]
|
||||
private static void KillAllEnemies()
|
||||
{
|
||||
EnemyManager.KillAll();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
`DebugButtonAttribute` 构造函数签名:
|
||||
|
||||
```csharp
|
||||
public DebugButtonAttribute(string displayName = "", float r = 0.8f, float g = 0.8f, float b = 0.8f);
|
||||
```
|
||||
|
||||
- `displayName`:按钮显示文字(可为空,为空则使用方法名)。
|
||||
- `r g b`:按钮背景色的 RGB 分量(0~1)。
|
||||
|
||||
写好方法后:
|
||||
|
||||
1. 进入 Play 模式。
|
||||
2. 打开调试工具 → 切换到“自定义按钮”标签页。
|
||||
3. 即可看到刚才添加的调试按钮,点击执行对应逻辑。
|
||||
|
||||
如果你在运行时新增/修改了带有 `DebugButtonAttribute` 的方法(如通过热更等方式),可以调用:
|
||||
|
||||
```csharp
|
||||
UniversalDebugTool.Instance.ReloadCustomButtons();
|
||||
```
|
||||
|
||||
来重新扫描并刷新按钮列表。
|
||||
|
||||
---
|
||||
|
||||
## 输入对话框(可选)
|
||||
|
||||
调试工具内置了一个简单的输入对话框,可与自定义按钮组合使用:
|
||||
|
||||
```csharp
|
||||
using TMPro;
|
||||
|
||||
public static class DemoInputDebug
|
||||
{
|
||||
[DebugButton("设置玩家等级")]
|
||||
private static void SetPlayerLevel()
|
||||
{
|
||||
UniversalDebugTool.ShowInputDialog(
|
||||
"输入玩家等级",
|
||||
onConfirmAction: text =>
|
||||
{
|
||||
if (int.TryParse(text, out var level))
|
||||
{
|
||||
PlayerData.Level = level;
|
||||
Debug.Log($"设置玩家等级为: {level}");
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning($"无效等级: {text}");
|
||||
}
|
||||
},
|
||||
initialValue: "1",
|
||||
contentType: TMP_InputField.ContentType.IntegerNumber
|
||||
);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
调用后会弹出一个输入框,用户点击确认时会把输入字符串传回回调函数中。
|
||||
|
||||
---
|
||||
|
||||
## 公共 API 一览
|
||||
|
||||
以下方法均定义在 `UniversalDebugTool` 中:
|
||||
|
||||
- `static bool InstanceExists`:当前场景中是否存在实例。
|
||||
- `static UniversalDebugTool Instance`:单例实例(通过 `FindObjectOfType` 查找)。
|
||||
- `static void Show()`:显示调试工具 GameObject。
|
||||
- `static void Hide()`:隐藏调试工具 GameObject。
|
||||
- `static void Toggle()`:在“窗口显示”和“窗口关闭 + 显示悬浮按钮”之间切换。
|
||||
- `void ReloadCustomButtons()`:重新扫描并生成自定义按钮。
|
||||
- `static void ShowInputDialog(string title, Action<string> onConfirmAction, string initialValue = "", TMP_InputField.ContentType contentType = TMP_InputField.ContentType.Standard)`:显示输入对话框。
|
||||
- `static void CloseInputDialog()`:关闭输入对话框并清理回调。
|
||||
- `void CopyDeviceInfoToClipboard()` / `void CopySystemInfoToClipboard()`:复制对应信息到系统剪贴板。
|
||||
|
||||
你也可以在自己项目的 UI / 快捷键逻辑中调用这些方法,例如:
|
||||
|
||||
```csharp
|
||||
// 示例:按 F1 切换调试面板
|
||||
void Update()
|
||||
{
|
||||
if (Input.GetKeyDown(KeyCode.F1))
|
||||
{
|
||||
UniversalDebugTool.Toggle();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 注意事项
|
||||
|
||||
- 依赖:
|
||||
- Unity 新 UI(`UnityEngine.UI`)。
|
||||
- TextMesh Pro(`TMPro`)。
|
||||
- 默认 UI 参考分辨率为 1080×2340,建议以手机竖屏调试为主。可在“设置”页中修改窗口大小以适配不同设备。
|
||||
- 工具栏中的“时间调整”逻辑仅是示例,需要你在 `AdjustGameTime` 中实现自己项目的时间修改逻辑。
|
||||
- 悬浮按钮依赖 `DraggableFloatingButton` 组件,请不要从生成的预制体中移除此组件,否则会失去拖拽/吸附功能。
|
||||
|
||||
如需进一步定制(增删标签页、调整布局、修改颜色风格等),推荐直接在生成的 `UniversalDebugTool` 预制体上修改 UI 结构和 `UniversalDebugTool` 组件的序列化字段。
|
||||
7
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/README.md.meta
vendored
Normal file
7
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/README.md.meta
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3e02e5b1c453f4e40ae8aae7b10ddf6c
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Runtime.meta
vendored
Normal file
8
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Runtime.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e468d6a064653104c9c82559cbcae7ef
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
232
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Runtime/DraggableFloatingButton.cs
vendored
Normal file
232
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Runtime/DraggableFloatingButton.cs
vendored
Normal file
@ -0,0 +1,232 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
using UnityEngine.UI;
|
||||
|
||||
/// <summary>
|
||||
/// 可拖动的悬浮按钮
|
||||
/// 点击打开调试工具,可以在屏幕上自由拖动
|
||||
/// </summary>
|
||||
public class DraggableFloatingButton : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
|
||||
{
|
||||
[Header("设置")]
|
||||
[Tooltip("是否限制在屏幕范围内")]
|
||||
public bool clampToScreen = true;
|
||||
|
||||
[Tooltip("与屏幕边缘的最小距离")]
|
||||
public float edgePadding = 20f;
|
||||
|
||||
[Header("自动吸附")]
|
||||
[Tooltip("是否自动吸附到屏幕边缘")]
|
||||
public bool snapToEdge = true;
|
||||
|
||||
[Tooltip("吸附动画时间")]
|
||||
public float snapDuration = 0.3f;
|
||||
|
||||
private RectTransform rectTransform;
|
||||
private Canvas canvas;
|
||||
private Vector2 dragOffset;
|
||||
private bool isDragging = false;
|
||||
private Vector2 targetPosition;
|
||||
private bool isSnapping = false;
|
||||
|
||||
// 用于区分点击和拖动
|
||||
private Vector2 dragStartPosition;
|
||||
private const float clickThreshold = 5f; // 小于这个距离算点击
|
||||
private bool wasDragging = false; // 标记刚才是否拖动过
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
rectTransform = GetComponent<RectTransform>();
|
||||
canvas = GetComponentInParent<Canvas>();
|
||||
|
||||
if (canvas == null)
|
||||
{
|
||||
Debug.LogError("DraggableFloatingButton 必须在Canvas下!");
|
||||
}
|
||||
|
||||
targetPosition = rectTransform.anchoredPosition;
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
// 平滑移动到目标位置(吸附动画)
|
||||
if (isSnapping && !isDragging)
|
||||
{
|
||||
rectTransform.anchoredPosition = Vector2.Lerp(
|
||||
rectTransform.anchoredPosition,
|
||||
targetPosition,
|
||||
Time.deltaTime / snapDuration
|
||||
);
|
||||
|
||||
if (Vector2.Distance(rectTransform.anchoredPosition, targetPosition) < 0.5f)
|
||||
{
|
||||
rectTransform.anchoredPosition = targetPosition;
|
||||
isSnapping = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void OnBeginDrag(PointerEventData eventData)
|
||||
{
|
||||
isDragging = true;
|
||||
isSnapping = false;
|
||||
|
||||
// 记录起始位置,用于判断是点击还是拖动
|
||||
dragStartPosition = eventData.position;
|
||||
|
||||
// 计算拖动偏移
|
||||
RectTransformUtility.ScreenPointToLocalPointInRectangle(
|
||||
canvas.transform as RectTransform,
|
||||
eventData.position,
|
||||
eventData.pressEventCamera,
|
||||
out Vector2 localPoint
|
||||
);
|
||||
|
||||
dragOffset = rectTransform.anchoredPosition - localPoint;
|
||||
}
|
||||
|
||||
public void OnDrag(PointerEventData eventData)
|
||||
{
|
||||
if (!isDragging) return;
|
||||
|
||||
// 转换屏幕坐标到Canvas局部坐标
|
||||
RectTransformUtility.ScreenPointToLocalPointInRectangle(
|
||||
canvas.transform as RectTransform,
|
||||
eventData.position,
|
||||
eventData.pressEventCamera,
|
||||
out Vector2 localPoint
|
||||
);
|
||||
|
||||
// 应用拖动偏移
|
||||
Vector2 newPosition = localPoint + dragOffset;
|
||||
|
||||
// 限制在屏幕范围内
|
||||
if (clampToScreen)
|
||||
{
|
||||
newPosition = ClampToScreen(newPosition);
|
||||
}
|
||||
|
||||
rectTransform.anchoredPosition = newPosition;
|
||||
}
|
||||
|
||||
public void OnEndDrag(PointerEventData eventData)
|
||||
{
|
||||
isDragging = false;
|
||||
|
||||
// 计算拖动距离
|
||||
float dragDistance = Vector2.Distance(dragStartPosition, eventData.position);
|
||||
|
||||
// 如果拖动距离超过阈值,说明是拖动而不是点击
|
||||
if (dragDistance > clickThreshold)
|
||||
{
|
||||
wasDragging = true;
|
||||
// 在下一帧重置标记
|
||||
StartCoroutine(ResetDragFlag());
|
||||
}
|
||||
|
||||
// 自动吸附到最近的边缘
|
||||
if (snapToEdge)
|
||||
{
|
||||
SnapToNearestEdge();
|
||||
}
|
||||
}
|
||||
|
||||
private System.Collections.IEnumerator ResetDragFlag()
|
||||
{
|
||||
yield return null; // 等待一帧
|
||||
wasDragging = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 检查是否刚拖动过(用于Button点击事件判断)
|
||||
/// </summary>
|
||||
public bool GetWasDragging()
|
||||
{
|
||||
return wasDragging;
|
||||
}
|
||||
|
||||
private Vector2 ClampToScreen(Vector2 position)
|
||||
{
|
||||
RectTransform canvasRect = canvas.transform as RectTransform;
|
||||
Vector2 canvasSize = canvasRect.sizeDelta;
|
||||
Vector2 buttonSize = rectTransform.sizeDelta;
|
||||
|
||||
// 计算可移动范围
|
||||
float minX = -canvasSize.x / 2 + buttonSize.x / 2 + edgePadding;
|
||||
float maxX = canvasSize.x / 2 - buttonSize.x / 2 - edgePadding;
|
||||
float minY = -canvasSize.y / 2 + buttonSize.y / 2 + edgePadding;
|
||||
float maxY = canvasSize.y / 2 - buttonSize.y / 2 - edgePadding;
|
||||
|
||||
position.x = Mathf.Clamp(position.x, minX, maxX);
|
||||
position.y = Mathf.Clamp(position.y, minY, maxY);
|
||||
|
||||
return position;
|
||||
}
|
||||
|
||||
private void SnapToNearestEdge()
|
||||
{
|
||||
RectTransform canvasRect = canvas.transform as RectTransform;
|
||||
Vector2 canvasSize = canvasRect.sizeDelta;
|
||||
Vector2 currentPos = rectTransform.anchoredPosition;
|
||||
|
||||
// 计算到各个边缘的距离
|
||||
float distToLeft = Mathf.Abs(currentPos.x + canvasSize.x / 2);
|
||||
float distToRight = Mathf.Abs(currentPos.x - canvasSize.x / 2);
|
||||
float distToTop = Mathf.Abs(currentPos.y - canvasSize.y / 2);
|
||||
float distToBottom = Mathf.Abs(currentPos.y + canvasSize.y / 2);
|
||||
|
||||
// 找到最近的边
|
||||
float minDist = Mathf.Min(distToLeft, distToRight, distToTop, distToBottom);
|
||||
|
||||
Vector2 snapPosition = currentPos;
|
||||
Vector2 buttonSize = rectTransform.sizeDelta;
|
||||
|
||||
if (minDist == distToLeft)
|
||||
{
|
||||
// 吸附到左边
|
||||
snapPosition.x = -canvasSize.x / 2 + buttonSize.x / 2 + edgePadding;
|
||||
}
|
||||
else if (minDist == distToRight)
|
||||
{
|
||||
// 吸附到右边
|
||||
snapPosition.x = canvasSize.x / 2 - buttonSize.x / 2 - edgePadding;
|
||||
}
|
||||
else if (minDist == distToTop)
|
||||
{
|
||||
// 吸附到顶部
|
||||
snapPosition.y = canvasSize.y / 2 - buttonSize.y / 2 - edgePadding;
|
||||
}
|
||||
else if (minDist == distToBottom)
|
||||
{
|
||||
// 吸附到底部
|
||||
snapPosition.y = -canvasSize.y / 2 + buttonSize.y / 2 + edgePadding;
|
||||
}
|
||||
|
||||
// 确保在屏幕范围内
|
||||
snapPosition = ClampToScreen(snapPosition);
|
||||
|
||||
targetPosition = snapPosition;
|
||||
isSnapping = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置悬浮按钮位置
|
||||
/// </summary>
|
||||
public void SetPosition(Vector2 position)
|
||||
{
|
||||
if (clampToScreen)
|
||||
{
|
||||
position = ClampToScreen(position);
|
||||
}
|
||||
rectTransform.anchoredPosition = position;
|
||||
targetPosition = position;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取当前位置
|
||||
/// </summary>
|
||||
public Vector2 GetPosition()
|
||||
{
|
||||
return rectTransform.anchoredPosition;
|
||||
}
|
||||
}
|
||||
11
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Runtime/DraggableFloatingButton.cs.meta
vendored
Normal file
11
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Runtime/DraggableFloatingButton.cs.meta
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2dcf1746b56f2ed478ee60e12c45a209
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Runtime/Hontbei.Meowmentdebugtool.asmdef
vendored
Normal file
8
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Runtime/Hontbei.Meowmentdebugtool.asmdef
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "Hontbei.Meowmentdebugtool",
|
||||
"references": [
|
||||
"Unity.TextMeshPro"
|
||||
],
|
||||
"includePlatforms": [],
|
||||
"excludePlatforms": []
|
||||
}
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ee28ff85037a9844f95ee9595c069fa4
|
||||
AssemblyDefinitionImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
763
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Runtime/UniversalDebugTool.cs
vendored
Normal file
763
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Runtime/UniversalDebugTool.cs
vendored
Normal file
@ -0,0 +1,763 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using TMPro;
|
||||
|
||||
/// <summary>
|
||||
/// 通用调试工具 - 支持多标签页的调试界面系统
|
||||
/// 默认分辨率: 1080x2340
|
||||
/// </summary>
|
||||
public class UniversalDebugTool : MonoBehaviour
|
||||
{
|
||||
#region 序列化字段
|
||||
[Header("主窗口设置")]
|
||||
[SerializeField] private RectTransform mainWindow;
|
||||
[SerializeField] private Canvas canvas;
|
||||
|
||||
[Header("标签页系统")]
|
||||
[SerializeField] private RectTransform tabButtonContainer;
|
||||
[SerializeField] private RectTransform contentContainer;
|
||||
[SerializeField] private GameObject tabButtonPrefab;
|
||||
[SerializeField] private Button closeButton;
|
||||
[SerializeField] private Color activeTabColor = Color.green;
|
||||
[SerializeField] private Color inactiveTabColor = Color.gray;
|
||||
|
||||
[Header("悬浮按钮")]
|
||||
[SerializeField] private GameObject floatingButton;
|
||||
[SerializeField] private DraggableFloatingButton draggableComponent;
|
||||
|
||||
[Header("参数查看页面")]
|
||||
[SerializeField] private GameObject parametersPage;
|
||||
[SerializeField] private TMP_Text deviceInfoText;
|
||||
[SerializeField] private TMP_Text systemInfoText;
|
||||
[SerializeField] private ScrollRect parametersScrollRect;
|
||||
|
||||
[Header("自定义按钮页面")]
|
||||
[SerializeField] private GameObject customButtonsPage;
|
||||
[SerializeField] private RectTransform buttonContainer;
|
||||
[SerializeField] private GameObject buttonPrefab;
|
||||
[SerializeField] private ScrollRect buttonsScrollRect;
|
||||
|
||||
[Header("工具栏页面")]
|
||||
[SerializeField] private GameObject toolbarPage;
|
||||
[SerializeField] private Slider timeAdjustSlider;
|
||||
[SerializeField] private TMP_Text timeAdjustValueText;
|
||||
[SerializeField] private Button timeIncreaseButton;
|
||||
[SerializeField] private Button timeDecreaseButton;
|
||||
|
||||
[Header("设置页面")]
|
||||
[SerializeField] private GameObject settingsPage;
|
||||
[SerializeField] private TMP_InputField widthInputField;
|
||||
[SerializeField] private TMP_InputField heightInputField;
|
||||
[SerializeField] private Button applyResolutionButton;
|
||||
[SerializeField] private Button resetResolutionButton;
|
||||
[SerializeField] private TMP_Text currentResolutionText;
|
||||
|
||||
[Header("输入对话框")]
|
||||
[SerializeField] private GameObject inputDialog;
|
||||
[SerializeField] private TMP_Text inputDialogTitle;
|
||||
[SerializeField] private TMP_InputField inputDialogInputField;
|
||||
[SerializeField] private Button inputDialogConfirmBtn;
|
||||
[SerializeField] private Button inputDialogCancelBtn;
|
||||
#endregion
|
||||
|
||||
#region 私有变量
|
||||
private static UniversalDebugTool instance;
|
||||
private Dictionary<string, GameObject> pages = new Dictionary<string, GameObject>();
|
||||
private Dictionary<string, Button> tabButtons = new Dictionary<string, Button>();
|
||||
private string currentPageKey = "";
|
||||
|
||||
// 默认分辨率
|
||||
private Vector2 defaultResolution = new Vector2(1080, 2340);
|
||||
private Vector2 currentCustomResolution;
|
||||
|
||||
// 自定义按钮回调
|
||||
private static Action<Button, TMP_Text> customButtonCallback;
|
||||
#endregion
|
||||
|
||||
#region 单例
|
||||
public static UniversalDebugTool Instance
|
||||
{
|
||||
get
|
||||
{
|
||||
if (instance == null)
|
||||
{
|
||||
instance = FindObjectOfType<UniversalDebugTool>();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool InstanceExists => instance != null;
|
||||
#endregion
|
||||
|
||||
#region Unity生命周期
|
||||
private void Awake()
|
||||
{
|
||||
if (instance == null)
|
||||
{
|
||||
instance = this;
|
||||
}
|
||||
else if (instance != this)
|
||||
{
|
||||
Destroy(gameObject);
|
||||
return;
|
||||
}
|
||||
|
||||
currentCustomResolution = defaultResolution;
|
||||
InitializeDebugTool();
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
UpdateDeviceInfo();
|
||||
UpdateSystemInfo();
|
||||
LoadCustomButtons();
|
||||
|
||||
// 初始状态:显示主窗口,隐藏悬浮按钮
|
||||
ShowMainWindow();
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
if (instance == this)
|
||||
{
|
||||
instance = null;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 初始化
|
||||
private void InitializeDebugTool()
|
||||
{
|
||||
Debug.Log("🚀 初始化UniversalDebugTool...");
|
||||
|
||||
// 注册所有页面
|
||||
RegisterPage("参数", parametersPage);
|
||||
RegisterPage("自定义按钮", customButtonsPage);
|
||||
RegisterPage("工具栏", toolbarPage);
|
||||
RegisterPage("设置", settingsPage);
|
||||
|
||||
Debug.Log($"📄 已注册{pages.Count}个页面");
|
||||
|
||||
// 创建标签按钮
|
||||
CreateTabButtons();
|
||||
|
||||
// 设置按钮事件
|
||||
if (closeButton != null)
|
||||
closeButton.onClick.AddListener(CloseDebugWindow);
|
||||
|
||||
if (applyResolutionButton != null)
|
||||
applyResolutionButton.onClick.AddListener(ApplyCustomResolution);
|
||||
|
||||
if (resetResolutionButton != null)
|
||||
resetResolutionButton.onClick.AddListener(ResetToDefaultResolution);
|
||||
|
||||
// 设置时间调整工具
|
||||
if (timeAdjustSlider != null)
|
||||
{
|
||||
timeAdjustSlider.onValueChanged.AddListener(OnTimeAdjustValueChanged);
|
||||
// 初始化显示
|
||||
UpdateTimeAdjustDisplay(timeAdjustSlider.value);
|
||||
}
|
||||
|
||||
if (timeIncreaseButton != null)
|
||||
timeIncreaseButton.onClick.AddListener(OnIncreaseTime);
|
||||
|
||||
if (timeDecreaseButton != null)
|
||||
timeDecreaseButton.onClick.AddListener(OnDecreaseTime);
|
||||
|
||||
// 设置悬浮按钮点击事件
|
||||
if (floatingButton != null)
|
||||
{
|
||||
Button floatBtn = floatingButton.GetComponent<Button>();
|
||||
if (floatBtn != null)
|
||||
{
|
||||
floatBtn.onClick.AddListener(OnFloatingButtonClick);
|
||||
}
|
||||
}
|
||||
|
||||
// 默认显示第一个页面
|
||||
if (pages.Count > 0)
|
||||
{
|
||||
ShowPage("参数");
|
||||
}
|
||||
|
||||
// 应用默认分辨率
|
||||
ApplyResolution(defaultResolution);
|
||||
|
||||
Debug.Log("✅ UniversalDebugTool初始化完成!");
|
||||
Debug.Log("💡 提示: 点击窗口顶部的标签切换页面,或按F1-F4使用快捷键");
|
||||
}
|
||||
|
||||
private void RegisterPage(string pageName, GameObject pageObject)
|
||||
{
|
||||
if (pageObject != null && !pages.ContainsKey(pageName))
|
||||
{
|
||||
pages[pageName] = pageObject;
|
||||
pageObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
private void CreateTabButtons()
|
||||
{
|
||||
if (tabButtonPrefab == null || tabButtonContainer == null)
|
||||
{
|
||||
Debug.LogError("❌ 标签按钮预制件或容器未设置!请重新生成预制件。");
|
||||
return;
|
||||
}
|
||||
|
||||
Debug.Log($"📋 开始创建{pages.Count}个标签按钮...");
|
||||
|
||||
foreach (var page in pages)
|
||||
{
|
||||
GameObject buttonObj = Instantiate(tabButtonPrefab, tabButtonContainer);
|
||||
buttonObj.name = $"Tab_{page.Key}";
|
||||
|
||||
Button button = buttonObj.GetComponent<Button>();
|
||||
TMP_Text buttonText = buttonObj.GetComponentInChildren<TMP_Text>();
|
||||
|
||||
if (buttonText != null)
|
||||
{
|
||||
buttonText.text = page.Key;
|
||||
Debug.Log($"✅ 创建标签: [{page.Key}]");
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning($"⚠️ 标签按钮 [{page.Key}] 缺少文本组件");
|
||||
}
|
||||
|
||||
string pageName = page.Key; // 闭包捕获
|
||||
button.onClick.AddListener(() => ShowPage(pageName));
|
||||
|
||||
tabButtons[page.Key] = button;
|
||||
}
|
||||
|
||||
Debug.Log("✅ 标签按钮创建完成!");
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 页面管理
|
||||
/// <summary>
|
||||
/// 显示指定的页面
|
||||
/// </summary>
|
||||
public void ShowPage(string pageName)
|
||||
{
|
||||
if (!pages.ContainsKey(pageName))
|
||||
{
|
||||
Debug.LogWarning($"页面 '{pageName}' 不存在!");
|
||||
return;
|
||||
}
|
||||
|
||||
// 隐藏所有页面
|
||||
foreach (var page in pages.Values)
|
||||
{
|
||||
page.SetActive(false);
|
||||
}
|
||||
|
||||
// 显示目标页面
|
||||
pages[pageName].SetActive(true);
|
||||
currentPageKey = pageName;
|
||||
|
||||
// 更新标签按钮状态
|
||||
UpdateTabButtonStates(pageName);
|
||||
}
|
||||
|
||||
private void UpdateTabButtonStates(string activePageName)
|
||||
{
|
||||
foreach (var kvp in tabButtons)
|
||||
{
|
||||
Image buttonImage = kvp.Value.GetComponent<Image>();
|
||||
if (buttonImage != null)
|
||||
{
|
||||
buttonImage.color = kvp.Key == activePageName ? activeTabColor : inactiveTabColor;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 参数查看功能
|
||||
private void UpdateDeviceInfo()
|
||||
{
|
||||
if (deviceInfoText == null) return;
|
||||
|
||||
string info = "===== 设备信息 =====\n";
|
||||
info += $"设备名称: {SystemInfo.deviceName}\n";
|
||||
info += $"设备型号: {SystemInfo.deviceModel}\n";
|
||||
info += $"设备类型: {SystemInfo.deviceType}\n";
|
||||
info += $"操作系统: {SystemInfo.operatingSystem}\n";
|
||||
info += $"处理器: {SystemInfo.processorType}\n";
|
||||
info += $"处理器核心数: {SystemInfo.processorCount}\n";
|
||||
info += $"系统内存: {SystemInfo.systemMemorySize} MB\n";
|
||||
info += $"显存: {SystemInfo.graphicsMemorySize} MB\n";
|
||||
info += $"设备标识符: {SystemInfo.deviceUniqueIdentifier}\n";
|
||||
|
||||
deviceInfoText.text = info;
|
||||
}
|
||||
|
||||
private void UpdateSystemInfo()
|
||||
{
|
||||
if (systemInfoText == null) return;
|
||||
|
||||
string info = "===== 系统信息 =====\n";
|
||||
info += $"Unity版本: {Application.unityVersion}\n";
|
||||
info += $"平台: {Application.platform}\n";
|
||||
info += $"产品名称: {Application.productName}\n";
|
||||
info += $"公司名称: {Application.companyName}\n";
|
||||
info += $"版本: {Application.version}\n";
|
||||
info += $"数据路径: {Application.dataPath}\n";
|
||||
info += $"持久化数据路径: {Application.persistentDataPath}\n";
|
||||
info += $"临时缓存路径: {Application.temporaryCachePath}\n";
|
||||
info += $"屏幕分辨率: {Screen.width} x {Screen.height} @ {Screen.currentResolution.refreshRateRatio.value:F2}Hz\n";
|
||||
info += $"屏幕DPI: {Screen.dpi}\n";
|
||||
info += $"是否全屏: {Screen.fullScreen}\n";
|
||||
info += $"目标帧率: {Application.targetFrameRate}\n";
|
||||
info += $"当前帧率: {(int)(1f / Time.smoothDeltaTime)}\n";
|
||||
info += $"\n===== 图形信息 =====\n";
|
||||
info += $"图形设备名称: {SystemInfo.graphicsDeviceName}\n";
|
||||
info += $"图形设备供应商: {SystemInfo.graphicsDeviceVendor}\n";
|
||||
info += $"图形设备类型: {SystemInfo.graphicsDeviceType}\n";
|
||||
info += $"图形设备版本: {SystemInfo.graphicsDeviceVersion}\n";
|
||||
info += $"着色器等级: {SystemInfo.graphicsShaderLevel}\n";
|
||||
info += $"多线程渲染: {SystemInfo.graphicsMultiThreaded}\n";
|
||||
|
||||
systemInfoText.text = info;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 复制设备信息到剪贴板
|
||||
/// </summary>
|
||||
public void CopyDeviceInfoToClipboard()
|
||||
{
|
||||
if (deviceInfoText != null)
|
||||
{
|
||||
GUIUtility.systemCopyBuffer = deviceInfoText.text;
|
||||
Debug.Log("设备信息已复制到剪贴板");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 复制系统信息到剪贴板
|
||||
/// </summary>
|
||||
public void CopySystemInfoToClipboard()
|
||||
{
|
||||
if (systemInfoText != null)
|
||||
{
|
||||
GUIUtility.systemCopyBuffer = systemInfoText.text;
|
||||
Debug.Log("系统信息已复制到剪贴板");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 刷新所有信息
|
||||
/// </summary>
|
||||
public void RefreshAllInfo()
|
||||
{
|
||||
UpdateDeviceInfo();
|
||||
UpdateSystemInfo();
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 自定义按钮功能
|
||||
/// <summary>
|
||||
/// 加载所有自定义按钮(使用反射)
|
||||
/// </summary>
|
||||
private void LoadCustomButtons()
|
||||
{
|
||||
if (buttonContainer == null || buttonPrefab == null)
|
||||
{
|
||||
Debug.LogWarning("按钮容器或按钮预制件未设置");
|
||||
return;
|
||||
}
|
||||
|
||||
// 清空现有按钮
|
||||
foreach (Transform child in buttonContainer)
|
||||
{
|
||||
Destroy(child.gameObject);
|
||||
}
|
||||
|
||||
// 查找所有标记为DebugButton的方法
|
||||
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
|
||||
foreach (var assembly in assemblies)
|
||||
{
|
||||
try
|
||||
{
|
||||
var types = assembly.GetTypes();
|
||||
foreach (var type in types)
|
||||
{
|
||||
var methods = type.GetMethods(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
|
||||
foreach (var method in methods)
|
||||
{
|
||||
var attribute = method.GetCustomAttribute<DebugButtonAttribute>();
|
||||
if (attribute != null)
|
||||
{
|
||||
CreateCustomButton(method, attribute);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// 某些程序集可能无法访问,跳过
|
||||
Debug.LogWarning($"无法访问程序集 {assembly.FullName}: {e.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void CreateCustomButton(MethodInfo method, DebugButtonAttribute attribute)
|
||||
{
|
||||
GameObject buttonObj = Instantiate(buttonPrefab, buttonContainer);
|
||||
Button button = buttonObj.GetComponent<Button>();
|
||||
TMP_Text buttonText = buttonObj.GetComponentInChildren<TMP_Text>();
|
||||
Image buttonImage = buttonObj.GetComponent<Image>();
|
||||
|
||||
// 设置按钮文本
|
||||
if (buttonText != null)
|
||||
{
|
||||
buttonText.text = string.IsNullOrEmpty(attribute.DisplayName) ? method.Name : attribute.DisplayName;
|
||||
}
|
||||
|
||||
// 设置按钮颜色
|
||||
if (buttonImage != null && attribute.ButtonColor != default(Color))
|
||||
{
|
||||
buttonImage.color = attribute.ButtonColor;
|
||||
}
|
||||
|
||||
// 设置按钮点击事件
|
||||
button.onClick.AddListener(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
method.Invoke(null, null);
|
||||
Debug.Log($"执行调试方法: {method.Name}");
|
||||
|
||||
// 调用回调
|
||||
customButtonCallback?.Invoke(button, buttonText);
|
||||
customButtonCallback = null;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.LogError($"执行调试方法 {method.Name} 时出错: {e.Message}");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置自定义按钮回调
|
||||
/// </summary>
|
||||
public static void SetCustomButtonCallback(Action<Button, TMP_Text> callback)
|
||||
{
|
||||
customButtonCallback = callback;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重新加载自定义按钮
|
||||
/// </summary>
|
||||
public void ReloadCustomButtons()
|
||||
{
|
||||
LoadCustomButtons();
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 工具栏功能
|
||||
private float timeAdjustValue = 60f; // 当前设置的时间调整值(秒)
|
||||
|
||||
/// <summary>
|
||||
/// 时间调整Slider值改变回调(只更新显示,不改变时间)
|
||||
/// </summary>
|
||||
private void OnTimeAdjustValueChanged(float value)
|
||||
{
|
||||
timeAdjustValue = value;
|
||||
UpdateTimeAdjustDisplay(value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新时间调整显示
|
||||
/// </summary>
|
||||
private void UpdateTimeAdjustDisplay(float seconds)
|
||||
{
|
||||
if (timeAdjustValueText != null)
|
||||
{
|
||||
if (seconds < 60)
|
||||
{
|
||||
timeAdjustValueText.text = $"{seconds:F0}秒";
|
||||
}
|
||||
else
|
||||
{
|
||||
float minutes = seconds / 60f;
|
||||
timeAdjustValueText.text = $"{minutes:F1}分钟";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 增加时间
|
||||
/// </summary>
|
||||
private void OnIncreaseTime()
|
||||
{
|
||||
// 修改系统时间(这里演示修改Time.time的偏移)
|
||||
float adjustSeconds = timeAdjustValue;
|
||||
|
||||
// 注意:Time.time本身无法直接修改,这里提供一个可以被重写的方法
|
||||
// 实际项目中,你应该修改游戏内的时间变量
|
||||
AdjustGameTime(adjustSeconds);
|
||||
|
||||
Debug.Log($"⏰ 增加时间: +{adjustSeconds}秒");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 减少时间
|
||||
/// </summary>
|
||||
private void OnDecreaseTime()
|
||||
{
|
||||
float adjustSeconds = -timeAdjustValue;
|
||||
|
||||
AdjustGameTime(adjustSeconds);
|
||||
|
||||
Debug.Log($"⏰ 减少时间: {adjustSeconds}秒");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 调整游戏时间(示例方法,需要根据实际项目修改)
|
||||
/// </summary>
|
||||
private void AdjustGameTime(float seconds)
|
||||
{
|
||||
// 方案1: 如果你的项目有全局时间管理器
|
||||
// TimeManager.Instance?.AddTime(seconds);
|
||||
|
||||
// 方案2: 如果你使用DateTime
|
||||
// GameTime.Current = GameTime.Current.AddSeconds(seconds);
|
||||
|
||||
// 方案3: 临时演示 - 修改Time.timeScale来模拟时间变化
|
||||
// 实际项目中应该修改你自己的时间变量
|
||||
Debug.Log($"💡 提示: 请在AdjustGameTime方法中实现你的时间调整逻辑");
|
||||
Debug.Log($"💡 建议: 修改游戏内的时间变量,例如 GameTime.Current.AddSeconds({seconds})");
|
||||
|
||||
// 示例:如果你有一个静态的游戏时间偏移量
|
||||
// GameTimeOffset += seconds;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 分辨率设置
|
||||
private void ApplyCustomResolution()
|
||||
{
|
||||
if (widthInputField == null || heightInputField == null) return;
|
||||
|
||||
if (float.TryParse(widthInputField.text, out float width) &&
|
||||
float.TryParse(heightInputField.text, out float height))
|
||||
{
|
||||
if (width > 0 && height > 0)
|
||||
{
|
||||
currentCustomResolution = new Vector2(width, height);
|
||||
ApplyResolution(currentCustomResolution);
|
||||
Debug.Log($"已应用自定义分辨率: {width} x {height}");
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning("分辨率值必须大于0");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning("无效的分辨率值");
|
||||
}
|
||||
}
|
||||
|
||||
private void ResetToDefaultResolution()
|
||||
{
|
||||
currentCustomResolution = defaultResolution;
|
||||
ApplyResolution(defaultResolution);
|
||||
|
||||
if (widthInputField != null)
|
||||
widthInputField.text = defaultResolution.x.ToString();
|
||||
if (heightInputField != null)
|
||||
heightInputField.text = defaultResolution.y.ToString();
|
||||
|
||||
Debug.Log($"已重置为默认分辨率: {defaultResolution.x} x {defaultResolution.y}");
|
||||
}
|
||||
|
||||
private void ApplyResolution(Vector2 resolution)
|
||||
{
|
||||
if (mainWindow != null)
|
||||
{
|
||||
mainWindow.sizeDelta = resolution;
|
||||
}
|
||||
|
||||
if (currentResolutionText != null)
|
||||
{
|
||||
currentResolutionText.text = $"当前窗口尺寸: {resolution.x} x {resolution.y}";
|
||||
}
|
||||
|
||||
// 强制刷新布局
|
||||
if (canvas != null)
|
||||
{
|
||||
Canvas.ForceUpdateCanvases();
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 输入对话框
|
||||
/// <summary>
|
||||
/// 显示输入对话框
|
||||
/// </summary>
|
||||
public static void ShowInputDialog(string title, Action<string> onConfirmAction,
|
||||
string initialValue = "", TMP_InputField.ContentType contentType = TMP_InputField.ContentType.Standard)
|
||||
{
|
||||
if (!InstanceExists) return;
|
||||
|
||||
var inst = Instance;
|
||||
if (inst.inputDialog == null) return;
|
||||
|
||||
inst.inputDialogInputField.contentType = contentType;
|
||||
inst.inputDialog.SetActive(true);
|
||||
inst.inputDialogTitle.text = title;
|
||||
inst.inputDialogInputField.text = initialValue;
|
||||
|
||||
inst.inputDialogConfirmBtn.onClick.RemoveAllListeners();
|
||||
inst.inputDialogConfirmBtn.onClick.AddListener(() =>
|
||||
{
|
||||
onConfirmAction?.Invoke(inst.inputDialogInputField.text);
|
||||
CloseInputDialog();
|
||||
});
|
||||
|
||||
inst.inputDialogCancelBtn.onClick.RemoveAllListeners();
|
||||
inst.inputDialogCancelBtn.onClick.AddListener(CloseInputDialog);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 关闭输入对话框
|
||||
/// </summary>
|
||||
public static void CloseInputDialog()
|
||||
{
|
||||
if (!InstanceExists) return;
|
||||
|
||||
var inst = Instance;
|
||||
if (inst.inputDialog == null) return;
|
||||
|
||||
inst.inputDialog.SetActive(false);
|
||||
inst.inputDialogInputField.text = "";
|
||||
inst.inputDialogConfirmBtn.onClick.RemoveAllListeners();
|
||||
inst.inputDialogCancelBtn.onClick.RemoveAllListeners();
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 公共API
|
||||
/// <summary>
|
||||
/// 显示调试工具
|
||||
/// </summary>
|
||||
public static void Show()
|
||||
{
|
||||
if (InstanceExists)
|
||||
{
|
||||
Instance.gameObject.SetActive(true);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 隐藏调试工具
|
||||
/// </summary>
|
||||
public static void Hide()
|
||||
{
|
||||
if (InstanceExists)
|
||||
{
|
||||
Instance.gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 切换调试工具显示状态
|
||||
/// </summary>
|
||||
public static void Toggle()
|
||||
{
|
||||
if (InstanceExists)
|
||||
{
|
||||
if (Instance.mainWindow != null && Instance.mainWindow.gameObject.activeSelf)
|
||||
{
|
||||
Instance.CloseDebugWindow();
|
||||
}
|
||||
else
|
||||
{
|
||||
Instance.OpenDebugWindow();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 关闭调试窗口,显示悬浮按钮
|
||||
/// </summary>
|
||||
public void CloseDebugWindow()
|
||||
{
|
||||
if (mainWindow != null)
|
||||
mainWindow.gameObject.SetActive(false);
|
||||
|
||||
if (floatingButton != null)
|
||||
floatingButton.SetActive(true);
|
||||
|
||||
Debug.Log("🔽 调试窗口已关闭");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 悬浮按钮点击回调(检查是否为拖动)
|
||||
/// </summary>
|
||||
private void OnFloatingButtonClick()
|
||||
{
|
||||
// 检查是否刚拖动过
|
||||
if (draggableComponent != null && draggableComponent.GetWasDragging())
|
||||
{
|
||||
// 如果刚拖动过,不打开窗口
|
||||
Debug.Log("🚫 拖动操作,不打开窗口");
|
||||
return;
|
||||
}
|
||||
|
||||
// 否则打开窗口
|
||||
OpenDebugWindow();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 打开调试窗口,隐藏悬浮按钮
|
||||
/// </summary>
|
||||
public void OpenDebugWindow()
|
||||
{
|
||||
if (floatingButton != null)
|
||||
floatingButton.SetActive(false);
|
||||
|
||||
if (mainWindow != null)
|
||||
mainWindow.gameObject.SetActive(true);
|
||||
|
||||
Debug.Log("🔼 调试窗口已打开");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 显示主窗口(初始化时调用)
|
||||
/// </summary>
|
||||
private void ShowMainWindow()
|
||||
{
|
||||
if (mainWindow != null)
|
||||
mainWindow.gameObject.SetActive(true);
|
||||
|
||||
if (floatingButton != null)
|
||||
floatingButton.SetActive(false);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
#region 自定义特性
|
||||
/// <summary>
|
||||
/// 调试按钮特性 - 标记方法为调试按钮
|
||||
/// </summary>
|
||||
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
|
||||
public class DebugButtonAttribute : Attribute
|
||||
{
|
||||
public string DisplayName { get; set; }
|
||||
public Color ButtonColor { get; set; }
|
||||
|
||||
public DebugButtonAttribute(string displayName = "", float r = 0.8f, float g = 0.8f, float b = 0.8f)
|
||||
{
|
||||
DisplayName = displayName;
|
||||
ButtonColor = new Color(r, g, b, 1f);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
11
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Runtime/UniversalDebugTool.cs.meta
vendored
Normal file
11
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Runtime/UniversalDebugTool.cs.meta
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 80a694deb5aa7774bad71c6f6edfcc5a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Samples~/MeowmentDebugToolSample.meta
vendored
Normal file
8
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/Samples~/MeowmentDebugToolSample.meta
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f4b915b71b15b3d40a7a2056ad678c43
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,257 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &3881209765909230299
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6728429640391017404}
|
||||
- component: {fileID: 2352417316950775027}
|
||||
- component: {fileID: 5769386640954096008}
|
||||
- component: {fileID: 1325501293128207700}
|
||||
m_Layer: 0
|
||||
m_Name: CustomButtonPrefab
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &6728429640391017404
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3881209765909230299}
|
||||
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:
|
||||
- {fileID: 6074569528420963325}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 200, y: 80}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &2352417316950775027
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3881209765909230299}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &5769386640954096008
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3881209765909230299}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.3, g: 0.3, b: 0.8, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 0}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!114 &1325501293128207700
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3881209765909230299}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Navigation:
|
||||
m_Mode: 3
|
||||
m_WrapAround: 0
|
||||
m_SelectOnUp: {fileID: 0}
|
||||
m_SelectOnDown: {fileID: 0}
|
||||
m_SelectOnLeft: {fileID: 0}
|
||||
m_SelectOnRight: {fileID: 0}
|
||||
m_Transition: 1
|
||||
m_Colors:
|
||||
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||
m_ColorMultiplier: 1
|
||||
m_FadeDuration: 0.1
|
||||
m_SpriteState:
|
||||
m_HighlightedSprite: {fileID: 0}
|
||||
m_PressedSprite: {fileID: 0}
|
||||
m_SelectedSprite: {fileID: 0}
|
||||
m_DisabledSprite: {fileID: 0}
|
||||
m_AnimationTriggers:
|
||||
m_NormalTrigger: Normal
|
||||
m_HighlightedTrigger: Highlighted
|
||||
m_PressedTrigger: Pressed
|
||||
m_SelectedTrigger: Selected
|
||||
m_DisabledTrigger: Disabled
|
||||
m_Interactable: 1
|
||||
m_TargetGraphic: {fileID: 5769386640954096008}
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
--- !u!1 &7577830103234660160
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6074569528420963325}
|
||||
- component: {fileID: 2278016343231618367}
|
||||
- component: {fileID: 5732067431234824322}
|
||||
m_Layer: 0
|
||||
m_Name: Text
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &6074569528420963325
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7577830103234660160}
|
||||
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: 6728429640391017404}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: -20, y: -20}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &2278016343231618367
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7577830103234660160}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &5732067431234824322
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7577830103234660160}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_text: Button
|
||||
m_isRightToLeft: 0
|
||||
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
||||
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
||||
m_fontSharedMaterials: []
|
||||
m_fontMaterial: {fileID: 0}
|
||||
m_fontMaterials: []
|
||||
m_fontColor32:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_enableVertexGradient: 0
|
||||
m_colorMode: 3
|
||||
m_fontColorGradient:
|
||||
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||
topRight: {r: 1, g: 1, b: 1, a: 1}
|
||||
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_fontColorGradientPreset: {fileID: 0}
|
||||
m_spriteAsset: {fileID: 0}
|
||||
m_tintAllSprites: 0
|
||||
m_StyleSheet: {fileID: 0}
|
||||
m_TextStyleHashCode: 0
|
||||
m_overrideHtmlColors: 0
|
||||
m_faceColor:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_fontSize: 24
|
||||
m_fontSizeBase: 24
|
||||
m_fontWeight: 400
|
||||
m_enableAutoSizing: 0
|
||||
m_fontSizeMin: 18
|
||||
m_fontSizeMax: 72
|
||||
m_fontStyle: 0
|
||||
m_HorizontalAlignment: 2
|
||||
m_VerticalAlignment: 512
|
||||
m_textAlignment: 65535
|
||||
m_characterSpacing: 0
|
||||
m_wordSpacing: 0
|
||||
m_lineSpacing: 0
|
||||
m_lineSpacingMax: 0
|
||||
m_paragraphSpacing: 0
|
||||
m_charWidthMaxAdj: 0
|
||||
m_enableWordWrapping: 1
|
||||
m_wordWrappingRatios: 0.4
|
||||
m_overflowMode: 0
|
||||
m_linkedTextComponent: {fileID: 0}
|
||||
parentLinkedComponent: {fileID: 0}
|
||||
m_enableKerning: 1
|
||||
m_enableExtraPadding: 0
|
||||
checkPaddingRequired: 0
|
||||
m_isRichText: 1
|
||||
m_parseCtrlCharacters: 1
|
||||
m_isOrthographic: 1
|
||||
m_isCullingEnabled: 0
|
||||
m_horizontalMapping: 0
|
||||
m_verticalMapping: 0
|
||||
m_uvLineOffset: 0
|
||||
m_geometrySortingOrder: 0
|
||||
m_IsTextObjectScaleStatic: 0
|
||||
m_VertexBufferAutoSizeReduction: 0
|
||||
m_useMaxVisibleDescender: 1
|
||||
m_pageToDisplay: 1
|
||||
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_isUsingLegacyAnimationComponent: 0
|
||||
m_isVolumetricText: 0
|
||||
m_hasFontAssetChanged: 0
|
||||
m_baseMaterial: {fileID: 0}
|
||||
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f5e7b8108eee01d46bf68ed912756e67
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ebfed08dbcdc460408e3c502052e7881
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,188 @@
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 示例调试函数集合
|
||||
/// 使用 [DebugButton] 特性来标记方法,它们会自动出现在调试工具中
|
||||
/// </summary>
|
||||
public static class SampleDebugFunctions
|
||||
{
|
||||
// 基础示例
|
||||
[DebugButton("打印Hello World")]
|
||||
public static void PrintHelloWorld()
|
||||
{
|
||||
Debug.Log("Hello World from Debug Tool!");
|
||||
}
|
||||
|
||||
// 带颜色的按钮
|
||||
[DebugButton("绿色按钮示例", 0.2f, 0.8f, 0.2f)]
|
||||
public static void GreenButtonExample()
|
||||
{
|
||||
Debug.Log("这是一个绿色按钮");
|
||||
}
|
||||
|
||||
[DebugButton("红色按钮示例", 0.8f, 0.2f, 0.2f)]
|
||||
public static void RedButtonExample()
|
||||
{
|
||||
Debug.LogWarning("这是一个红色按钮 - 通常用于危险操作");
|
||||
}
|
||||
|
||||
[DebugButton("蓝色按钮示例", 0.2f, 0.5f, 0.8f)]
|
||||
public static void BlueButtonExample()
|
||||
{
|
||||
Debug.Log("这是一个蓝色按钮");
|
||||
}
|
||||
|
||||
// 时间相关
|
||||
[DebugButton("显示当前时间", 0.7f, 0.7f, 0.2f)]
|
||||
public static void ShowCurrentTime()
|
||||
{
|
||||
Debug.Log($"当前时间: {System.DateTime.Now:yyyy-MM-dd HH:mm:ss}");
|
||||
}
|
||||
|
||||
[DebugButton("暂停游戏", 0.9f, 0.5f, 0.2f)]
|
||||
public static void PauseGame()
|
||||
{
|
||||
Time.timeScale = 0f;
|
||||
Debug.Log("游戏已暂停");
|
||||
}
|
||||
|
||||
[DebugButton("恢复游戏", 0.2f, 0.9f, 0.5f)]
|
||||
public static void ResumeGame()
|
||||
{
|
||||
Time.timeScale = 1f;
|
||||
Debug.Log("游戏已恢复");
|
||||
}
|
||||
|
||||
// 系统信息
|
||||
[DebugButton("打印系统信息")]
|
||||
public static void PrintSystemInfo()
|
||||
{
|
||||
Debug.Log($"平台: {Application.platform}");
|
||||
Debug.Log($"Unity版本: {Application.unityVersion}");
|
||||
Debug.Log($"设备型号: {SystemInfo.deviceModel}");
|
||||
Debug.Log($"操作系统: {SystemInfo.operatingSystem}");
|
||||
}
|
||||
|
||||
// 内存管理
|
||||
[DebugButton("强制GC", 0.9f, 0.3f, 0.3f)]
|
||||
public static void ForceGarbageCollection()
|
||||
{
|
||||
System.GC.Collect();
|
||||
Debug.Log("已触发垃圾回收");
|
||||
}
|
||||
|
||||
[DebugButton("卸载未使用资源", 0.9f, 0.5f, 0.3f)]
|
||||
public static void UnloadUnusedAssets()
|
||||
{
|
||||
Resources.UnloadUnusedAssets();
|
||||
Debug.Log("已卸载未使用的资源");
|
||||
}
|
||||
|
||||
// 场景管理
|
||||
[DebugButton("重新加载当前场景", 0.8f, 0.4f, 0.2f)]
|
||||
public static void ReloadCurrentScene()
|
||||
{
|
||||
UnityEngine.SceneManagement.SceneManager.LoadScene(
|
||||
UnityEngine.SceneManagement.SceneManager.GetActiveScene().name);
|
||||
Debug.Log("正在重新加载当前场景");
|
||||
}
|
||||
|
||||
// 屏幕设置
|
||||
[DebugButton("切换全屏")]
|
||||
public static void ToggleFullscreen()
|
||||
{
|
||||
Screen.fullScreen = !Screen.fullScreen;
|
||||
Debug.Log($"全屏模式: {Screen.fullScreen}");
|
||||
}
|
||||
|
||||
[DebugButton("设置目标帧率60")]
|
||||
public static void SetTargetFrameRate60()
|
||||
{
|
||||
Application.targetFrameRate = 60;
|
||||
Debug.Log("目标帧率设置为60");
|
||||
}
|
||||
|
||||
[DebugButton("设置目标帧率30")]
|
||||
public static void SetTargetFrameRate30()
|
||||
{
|
||||
Application.targetFrameRate = 30;
|
||||
Debug.Log("目标帧率设置为30");
|
||||
}
|
||||
|
||||
[DebugButton("取消帧率限制")]
|
||||
public static void UnlimitedFrameRate()
|
||||
{
|
||||
Application.targetFrameRate = -1;
|
||||
Debug.Log("已取消帧率限制");
|
||||
}
|
||||
|
||||
// 音频设置
|
||||
[DebugButton("静音", 0.5f, 0.5f, 0.5f)]
|
||||
public static void MuteAudio()
|
||||
{
|
||||
AudioListener.volume = 0f;
|
||||
Debug.Log("已静音");
|
||||
}
|
||||
|
||||
[DebugButton("取消静音", 0.2f, 0.8f, 0.8f)]
|
||||
public static void UnmuteAudio()
|
||||
{
|
||||
AudioListener.volume = 1f;
|
||||
Debug.Log("已取消静音");
|
||||
}
|
||||
|
||||
// 输入对话框示例
|
||||
[DebugButton("输入测试", 0.5f, 0.7f, 0.9f)]
|
||||
public static void ShowInputDialogExample()
|
||||
{
|
||||
UniversalDebugTool.ShowInputDialog("请输入内容", (input) =>
|
||||
{
|
||||
Debug.Log($"你输入了: {input}");
|
||||
}, "默认值");
|
||||
}
|
||||
|
||||
// 数字输入示例
|
||||
[DebugButton("数字输入测试", 0.5f, 0.7f, 0.9f)]
|
||||
public static void ShowNumberInputDialog()
|
||||
{
|
||||
UniversalDebugTool.ShowInputDialog("请输入数字", (input) =>
|
||||
{
|
||||
if (float.TryParse(input, out float value))
|
||||
{
|
||||
Debug.Log($"你输入的数字是: {value}");
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning("输入的不是有效数字");
|
||||
}
|
||||
}, "100", TMPro.TMP_InputField.ContentType.DecimalNumber);
|
||||
}
|
||||
|
||||
// PlayerPrefs相关
|
||||
[DebugButton("清空PlayerPrefs", 0.9f, 0.2f, 0.2f)]
|
||||
public static void ClearPlayerPrefs()
|
||||
{
|
||||
PlayerPrefs.DeleteAll();
|
||||
PlayerPrefs.Save();
|
||||
Debug.Log("已清空所有PlayerPrefs数据");
|
||||
}
|
||||
|
||||
[DebugButton("保存PlayerPrefs")]
|
||||
public static void SavePlayerPrefs()
|
||||
{
|
||||
PlayerPrefs.Save();
|
||||
Debug.Log("已保存PlayerPrefs");
|
||||
}
|
||||
|
||||
// 退出游戏
|
||||
[DebugButton("退出应用", 1f, 0f, 0f)]
|
||||
public static void QuitApplication()
|
||||
{
|
||||
Debug.Log("退出应用");
|
||||
#if UNITY_EDITOR
|
||||
UnityEditor.EditorApplication.isPlaying = false;
|
||||
#else
|
||||
Application.Quit();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cd5ef1ceee669994d9bb5afcb9ff5131
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,257 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &6819558007183593838
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3842217457948720423}
|
||||
- component: {fileID: 849869106104280388}
|
||||
- component: {fileID: 6447641627266444971}
|
||||
- component: {fileID: 8150773266496098555}
|
||||
m_Layer: 0
|
||||
m_Name: TabButtonPrefab
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &3842217457948720423
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6819558007183593838}
|
||||
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:
|
||||
- {fileID: 4298862431125743836}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 200, y: 80}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &849869106104280388
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6819558007183593838}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &6447641627266444971
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6819558007183593838}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 0}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!114 &8150773266496098555
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6819558007183593838}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Navigation:
|
||||
m_Mode: 3
|
||||
m_WrapAround: 0
|
||||
m_SelectOnUp: {fileID: 0}
|
||||
m_SelectOnDown: {fileID: 0}
|
||||
m_SelectOnLeft: {fileID: 0}
|
||||
m_SelectOnRight: {fileID: 0}
|
||||
m_Transition: 1
|
||||
m_Colors:
|
||||
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||
m_ColorMultiplier: 1
|
||||
m_FadeDuration: 0.1
|
||||
m_SpriteState:
|
||||
m_HighlightedSprite: {fileID: 0}
|
||||
m_PressedSprite: {fileID: 0}
|
||||
m_SelectedSprite: {fileID: 0}
|
||||
m_DisabledSprite: {fileID: 0}
|
||||
m_AnimationTriggers:
|
||||
m_NormalTrigger: Normal
|
||||
m_HighlightedTrigger: Highlighted
|
||||
m_PressedTrigger: Pressed
|
||||
m_SelectedTrigger: Selected
|
||||
m_DisabledTrigger: Disabled
|
||||
m_Interactable: 1
|
||||
m_TargetGraphic: {fileID: 6447641627266444971}
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
--- !u!1 &7442242341622436878
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4298862431125743836}
|
||||
- component: {fileID: 8634582329154924209}
|
||||
- component: {fileID: 2303096978450003477}
|
||||
m_Layer: 0
|
||||
m_Name: Text
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &4298862431125743836
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7442242341622436878}
|
||||
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: 3842217457948720423}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &8634582329154924209
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7442242341622436878}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &2303096978450003477
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7442242341622436878}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_text: Tab
|
||||
m_isRightToLeft: 0
|
||||
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
||||
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
||||
m_fontSharedMaterials: []
|
||||
m_fontMaterial: {fileID: 0}
|
||||
m_fontMaterials: []
|
||||
m_fontColor32:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_enableVertexGradient: 0
|
||||
m_colorMode: 3
|
||||
m_fontColorGradient:
|
||||
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||
topRight: {r: 1, g: 1, b: 1, a: 1}
|
||||
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_fontColorGradientPreset: {fileID: 0}
|
||||
m_spriteAsset: {fileID: 0}
|
||||
m_tintAllSprites: 0
|
||||
m_StyleSheet: {fileID: 0}
|
||||
m_TextStyleHashCode: 0
|
||||
m_overrideHtmlColors: 0
|
||||
m_faceColor:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_fontSize: 32
|
||||
m_fontSizeBase: 32
|
||||
m_fontWeight: 400
|
||||
m_enableAutoSizing: 0
|
||||
m_fontSizeMin: 18
|
||||
m_fontSizeMax: 72
|
||||
m_fontStyle: 0
|
||||
m_HorizontalAlignment: 2
|
||||
m_VerticalAlignment: 512
|
||||
m_textAlignment: 65535
|
||||
m_characterSpacing: 0
|
||||
m_wordSpacing: 0
|
||||
m_lineSpacing: 0
|
||||
m_lineSpacingMax: 0
|
||||
m_paragraphSpacing: 0
|
||||
m_charWidthMaxAdj: 0
|
||||
m_enableWordWrapping: 1
|
||||
m_wordWrappingRatios: 0.4
|
||||
m_overflowMode: 0
|
||||
m_linkedTextComponent: {fileID: 0}
|
||||
parentLinkedComponent: {fileID: 0}
|
||||
m_enableKerning: 1
|
||||
m_enableExtraPadding: 0
|
||||
checkPaddingRequired: 0
|
||||
m_isRichText: 1
|
||||
m_parseCtrlCharacters: 1
|
||||
m_isOrthographic: 1
|
||||
m_isCullingEnabled: 0
|
||||
m_horizontalMapping: 0
|
||||
m_verticalMapping: 0
|
||||
m_uvLineOffset: 0
|
||||
m_geometrySortingOrder: 0
|
||||
m_IsTextObjectScaleStatic: 0
|
||||
m_VertexBufferAutoSizeReduction: 0
|
||||
m_useMaxVisibleDescender: 1
|
||||
m_pageToDisplay: 1
|
||||
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_isUsingLegacyAnimationComponent: 0
|
||||
m_isVolumetricText: 0
|
||||
m_hasFontAssetChanged: 0
|
||||
m_baseMaterial: {fileID: 0}
|
||||
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 14784234f6e67a14ca69c3a41c370dd9
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 05030b095151b0446b36ce3e52b1945a
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
17
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/package.json
vendored
Normal file
17
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/package.json
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "com.bywaystudios.meowmentdebugtool",
|
||||
"displayName": "MeowmentDebugTool",
|
||||
"version": "0.1.6",
|
||||
"description": "\u8c03\u8bd5\u5de5\u5177\uff0c\u96c6\u6210\u4e86\u5ba2\u6237\u7aef\u6d4b\u8bd5\u65f6\u7684\u5e38\u7528\u529f\u80fd\uff0c\u652f\u6301\u6269\u5c55\u81ea\u5b9a\u4e49\u6309\u94ae\uff0c\u65b9\u4fbf\u5f00\u53d1\u8005\u8c03\u8bd5\u548c\u6d4b\u8bd5\u3002",
|
||||
"samples": [
|
||||
{
|
||||
"displayName": "MeowmentDebugTool Sample",
|
||||
"description": "A simple sample to demonstrate the usage of MeowmentDebugTool.",
|
||||
"path": "Samples~/MeowmentDebugToolSample"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"com.unity.ugui": "1.0.0",
|
||||
"com.unity.textmeshpro": "3.0.7"
|
||||
}
|
||||
}
|
||||
7
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/package.json.meta
vendored
Normal file
7
Packages/com.bywaystudios.meowmentdebugtool@0.1.4/package.json.meta
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 79aacf7240a6ee94fb43e6d58c4082d6
|
||||
PackageManifestImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
74
Packages/manifest.json
Normal file
74
Packages/manifest.json
Normal file
@ -0,0 +1,74 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"com.bywaystudios.meowmentdebugtool": "0.1.4",
|
||||
"com.unity.asset-store-validation": "0.6.0",
|
||||
"com.unity.collab-proxy": "2.10.2",
|
||||
"com.unity.editorcoroutines": "1.0.1",
|
||||
"com.unity.feature.development": "1.0.1",
|
||||
"com.unity.ide.rider": "3.0.38",
|
||||
"com.unity.ide.visualstudio": "2.0.25",
|
||||
"com.unity.ide.vscode": "1.2.5",
|
||||
"com.unity.nuget.newtonsoft-json": "3.2.2",
|
||||
"com.unity.performance.profile-analyzer": "1.2.4",
|
||||
"com.unity.settings-manager": "2.1.1",
|
||||
"com.unity.test-framework": "1.1.33",
|
||||
"com.unity.testtools.codecoverage": "1.2.7",
|
||||
"com.unity.upm.develop": "0.5.3-exp.1",
|
||||
"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"
|
||||
},
|
||||
"scopedRegistries": [
|
||||
{
|
||||
"name": "OpenUPM",
|
||||
"url": "https://package.openupm.com",
|
||||
"scopes": [
|
||||
"com.google"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "BywayStudios",
|
||||
"url": "https://npm.bywaystudios.com/",
|
||||
"scopes": [
|
||||
"com.bywaystudios"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "AppLovin MAX Unity",
|
||||
"url": "https://unity.packages.applovin.com/",
|
||||
"scopes": [
|
||||
"com.applovin.mediation.ads",
|
||||
"com.applovin.mediation.adapters",
|
||||
"com.applovin.mediation.dsp"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
396
Packages/packages-lock.json
Normal file
396
Packages/packages-lock.json
Normal file
@ -0,0 +1,396 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"com.bywaystudios.meowmentdebugtool": {
|
||||
"version": "file:com.bywaystudios.meowmentdebugtool@0.1.4",
|
||||
"depth": 0,
|
||||
"source": "embedded",
|
||||
"dependencies": {
|
||||
"com.unity.ugui": "1.0.0",
|
||||
"com.unity.textmeshpro": "3.0.7"
|
||||
}
|
||||
},
|
||||
"com.unity.asset-store-validation": {
|
||||
"version": "0.6.0",
|
||||
"depth": 0,
|
||||
"source": "registry",
|
||||
"dependencies": {
|
||||
"com.unity.nuget.newtonsoft-json": "2.0.2"
|
||||
},
|
||||
"url": "https://packages.unity.com"
|
||||
},
|
||||
"com.unity.collab-proxy": {
|
||||
"version": "2.10.2",
|
||||
"depth": 0,
|
||||
"source": "registry",
|
||||
"dependencies": {},
|
||||
"url": "https://packages.unity.com"
|
||||
},
|
||||
"com.unity.editorcoroutines": {
|
||||
"version": "1.0.1",
|
||||
"depth": 0,
|
||||
"source": "registry",
|
||||
"dependencies": {},
|
||||
"url": "https://packages.unity.com"
|
||||
},
|
||||
"com.unity.ext.nunit": {
|
||||
"version": "1.0.6",
|
||||
"depth": 1,
|
||||
"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.22",
|
||||
"com.unity.ide.rider": "3.0.36",
|
||||
"com.unity.ide.vscode": "1.2.5",
|
||||
"com.unity.editorcoroutines": "1.0.0",
|
||||
"com.unity.performance.profile-analyzer": "1.2.3",
|
||||
"com.unity.test-framework": "1.1.33",
|
||||
"com.unity.testtools.codecoverage": "1.2.6"
|
||||
}
|
||||
},
|
||||
"com.unity.ide.rider": {
|
||||
"version": "3.0.38",
|
||||
"depth": 0,
|
||||
"source": "registry",
|
||||
"dependencies": {
|
||||
"com.unity.ext.nunit": "1.0.6"
|
||||
},
|
||||
"url": "https://packages.unity.com"
|
||||
},
|
||||
"com.unity.ide.visualstudio": {
|
||||
"version": "2.0.25",
|
||||
"depth": 0,
|
||||
"source": "registry",
|
||||
"dependencies": {
|
||||
"com.unity.test-framework": "1.1.31"
|
||||
},
|
||||
"url": "https://packages.unity.com"
|
||||
},
|
||||
"com.unity.ide.vscode": {
|
||||
"version": "1.2.5",
|
||||
"depth": 0,
|
||||
"source": "registry",
|
||||
"dependencies": {},
|
||||
"url": "https://packages.unity.com"
|
||||
},
|
||||
"com.unity.nuget.newtonsoft-json": {
|
||||
"version": "3.2.2",
|
||||
"depth": 0,
|
||||
"source": "registry",
|
||||
"dependencies": {},
|
||||
"url": "https://packages.unity.com"
|
||||
},
|
||||
"com.unity.performance.profile-analyzer": {
|
||||
"version": "1.2.4",
|
||||
"depth": 0,
|
||||
"source": "registry",
|
||||
"dependencies": {},
|
||||
"url": "https://packages.unity.com"
|
||||
},
|
||||
"com.unity.settings-manager": {
|
||||
"version": "2.1.1",
|
||||
"depth": 0,
|
||||
"source": "registry",
|
||||
"dependencies": {},
|
||||
"url": "https://packages.unity.com"
|
||||
},
|
||||
"com.unity.test-framework": {
|
||||
"version": "1.1.33",
|
||||
"depth": 0,
|
||||
"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.7",
|
||||
"depth": 0,
|
||||
"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.7",
|
||||
"depth": 1,
|
||||
"source": "registry",
|
||||
"dependencies": {
|
||||
"com.unity.ugui": "1.0.0"
|
||||
},
|
||||
"url": "https://packages.unity.com"
|
||||
},
|
||||
"com.unity.ugui": {
|
||||
"version": "1.0.0",
|
||||
"depth": 1,
|
||||
"source": "builtin",
|
||||
"dependencies": {
|
||||
"com.unity.modules.ui": "1.0.0",
|
||||
"com.unity.modules.imgui": "1.0.0"
|
||||
}
|
||||
},
|
||||
"com.unity.upm.develop": {
|
||||
"version": "0.5.3-exp.1",
|
||||
"depth": 0,
|
||||
"source": "registry",
|
||||
"dependencies": {
|
||||
"com.unity.test-framework": "1.1.20",
|
||||
"com.unity.nuget.newtonsoft-json": "2.0.2",
|
||||
"com.unity.asset-store-validation": "0.1.3"
|
||||
},
|
||||
"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
|
||||
62
ProjectSettings/PackageManagerSettings.asset
Normal file
62
ProjectSettings/PackageManagerSettings.asset
Normal file
@ -0,0 +1,62 @@
|
||||
%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_AdvancedSettingsExpanded: 1
|
||||
m_ScopedRegistriesSettingsExpanded: 1
|
||||
m_SeeAllPackageVersions: 0
|
||||
m_DismissPreviewPackagesInUse: 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_ConfigSource: 0
|
||||
- m_Id: scoped:project:OpenUPM
|
||||
m_Name: OpenUPM
|
||||
m_Url: https://package.openupm.com
|
||||
m_Scopes:
|
||||
- com.google
|
||||
m_IsDefault: 0
|
||||
m_Capabilities: 0
|
||||
m_ConfigSource: 4
|
||||
- m_Id: scoped:project:BywayStudios
|
||||
m_Name: BywayStudios
|
||||
m_Url: https://npm.bywaystudios.com
|
||||
m_Scopes:
|
||||
- com.bywaystudios
|
||||
m_IsDefault: 0
|
||||
m_Capabilities: 0
|
||||
m_ConfigSource: 4
|
||||
- m_Id: scoped:project:AppLovin MAX Unity
|
||||
m_Name: AppLovin MAX Unity
|
||||
m_Url: https://unity.packages.applovin.com
|
||||
m_Scopes:
|
||||
- com.applovin.mediation.ads
|
||||
- com.applovin.mediation.adapters
|
||||
- com.applovin.mediation.dsp
|
||||
m_IsDefault: 0
|
||||
m_Capabilities: 0
|
||||
m_ConfigSource: 4
|
||||
m_UserSelectedRegistryName: OpenUPM
|
||||
m_UserAddingNewScopedRegistry: 0
|
||||
m_RegistryInfoDraft:
|
||||
m_Modified: 0
|
||||
m_ErrorMessage:
|
||||
m_UserModificationsInstanceId: -834
|
||||
m_OriginalInstanceId: -836
|
||||
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: {}
|
||||
962
ProjectSettings/ProjectSettings.asset
Normal file
962
ProjectSettings/ProjectSettings.asset
Normal file
@ -0,0 +1,962 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!129 &1
|
||||
PlayerSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 26
|
||||
productGUID: 282a8bc53a357e94fb87cebb24064bb7
|
||||
AndroidProfiler: 0
|
||||
AndroidFilterTouchesWhenObscured: 0
|
||||
AndroidEnableSustainedPerformanceMode: 0
|
||||
defaultScreenOrientation: 4
|
||||
targetDevice: 2
|
||||
useOnDemandResources: 0
|
||||
accelerometerFrequency: 60
|
||||
companyName: DefaultCompany
|
||||
productName: MeowMentDebugTool
|
||||
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: 1
|
||||
unsupportedMSAAFallback: 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
|
||||
androidAutoRotationBehavior: 1
|
||||
androidPredictiveBackSupport: 1
|
||||
defaultIsNativeResolution: 1
|
||||
macRetinaSupport: 1
|
||||
runInBackground: 1
|
||||
captureSingleScreen: 0
|
||||
muteOtherAudioSources: 0
|
||||
Prepare IOS For Recording: 0
|
||||
Force IOS Speakers When Recording: 0
|
||||
audioSpatialExperience: 0
|
||||
deferSystemGesturesMode: 0
|
||||
hideHomeButton: 0
|
||||
submitAnalytics: 1
|
||||
usePlayerLog: 1
|
||||
dedicatedServerOptimizations: 0
|
||||
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
|
||||
switchMaxWorkerMultiple: 8
|
||||
stadiaPresentMode: 0
|
||||
stadiaTargetFramerate: 0
|
||||
vulkanNumSwapchainBuffers: 3
|
||||
vulkanEnableSetSRGBWrite: 0
|
||||
vulkanEnablePreTransform: 1
|
||||
vulkanEnableLateAcquireNextImage: 0
|
||||
vulkanEnableCommandBufferRecycling: 1
|
||||
loadStoreDebugModeEnabled: 0
|
||||
visionOSBundleVersion: 1.0
|
||||
tvOSBundleVersion: 1.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
|
||||
allowHDRDisplaySupport: 0
|
||||
useHDRDisplay: 0
|
||||
hdrBitDepth: 0
|
||||
m_ColorGamuts: 00000000
|
||||
targetPixelDensity: 30
|
||||
resolutionScalingMode: 0
|
||||
resetResolutionOnWindowResize: 0
|
||||
androidSupportedAspectRatio: 1
|
||||
androidMaxAspectRatio: 2.1
|
||||
applicationIdentifier:
|
||||
Standalone: com.DefaultCompany.MeowMentDebugTool
|
||||
buildNumber:
|
||||
Standalone: 0
|
||||
VisionOS: 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
|
||||
iOSSimulatorArchitecture: 0
|
||||
iOSTargetOSVersionString: 12.0
|
||||
tvOSSdkVersion: 0
|
||||
tvOSSimulatorArchitecture: 0
|
||||
tvOSRequireExtendedGameController: 0
|
||||
tvOSTargetOSVersionString: 12.0
|
||||
VisionOSSdkVersion: 0
|
||||
VisionOSTargetOSVersionString: 1.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
|
||||
metalCompileShaderBinary: 0
|
||||
iOSRenderExtraFrameOnPause: 0
|
||||
iosCopyPluginsCodeInsteadOfSymlink: 0
|
||||
appleDeveloperTeamID:
|
||||
iOSManualSigningProvisioningProfileID:
|
||||
tvOSManualSigningProvisioningProfileID:
|
||||
VisionOSManualSigningProvisioningProfileID:
|
||||
iOSManualSigningProvisioningProfileType: 0
|
||||
tvOSManualSigningProvisioningProfileType: 0
|
||||
VisionOSManualSigningProvisioningProfileType: 0
|
||||
appleEnableAutomaticSigning: 0
|
||||
iOSRequireARKit: 0
|
||||
iOSAutomaticallyDetectAndAddCapabilities: 1
|
||||
appleEnableProMotion: 0
|
||||
shaderPrecisionModel: 0
|
||||
clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea
|
||||
templatePackageId: com.unity.template.packagetemplate@1.0.0
|
||||
templateDefaultScene: Assets/Scenes/SampleScene.unity
|
||||
useCustomMainManifest: 0
|
||||
useCustomLauncherManifest: 0
|
||||
useCustomMainGradleTemplate: 0
|
||||
useCustomLauncherGradleManifest: 0
|
||||
useCustomBaseGradleTemplate: 0
|
||||
useCustomGradlePropertiesTemplate: 0
|
||||
useCustomGradleSettingsTemplate: 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_BuildTarget: iPhone
|
||||
m_Icons:
|
||||
- m_Textures: []
|
||||
m_Width: 180
|
||||
m_Height: 180
|
||||
m_Kind: 0
|
||||
m_SubKind: iPhone
|
||||
- m_Textures: []
|
||||
m_Width: 120
|
||||
m_Height: 120
|
||||
m_Kind: 0
|
||||
m_SubKind: iPhone
|
||||
- m_Textures: []
|
||||
m_Width: 167
|
||||
m_Height: 167
|
||||
m_Kind: 0
|
||||
m_SubKind: iPad
|
||||
- m_Textures: []
|
||||
m_Width: 152
|
||||
m_Height: 152
|
||||
m_Kind: 0
|
||||
m_SubKind: iPad
|
||||
- m_Textures: []
|
||||
m_Width: 76
|
||||
m_Height: 76
|
||||
m_Kind: 0
|
||||
m_SubKind: iPad
|
||||
- m_Textures: []
|
||||
m_Width: 120
|
||||
m_Height: 120
|
||||
m_Kind: 3
|
||||
m_SubKind: iPhone
|
||||
- m_Textures: []
|
||||
m_Width: 80
|
||||
m_Height: 80
|
||||
m_Kind: 3
|
||||
m_SubKind: iPhone
|
||||
- m_Textures: []
|
||||
m_Width: 80
|
||||
m_Height: 80
|
||||
m_Kind: 3
|
||||
m_SubKind: iPad
|
||||
- m_Textures: []
|
||||
m_Width: 40
|
||||
m_Height: 40
|
||||
m_Kind: 3
|
||||
m_SubKind: iPad
|
||||
- m_Textures: []
|
||||
m_Width: 87
|
||||
m_Height: 87
|
||||
m_Kind: 1
|
||||
m_SubKind: iPhone
|
||||
- m_Textures: []
|
||||
m_Width: 58
|
||||
m_Height: 58
|
||||
m_Kind: 1
|
||||
m_SubKind: iPhone
|
||||
- m_Textures: []
|
||||
m_Width: 29
|
||||
m_Height: 29
|
||||
m_Kind: 1
|
||||
m_SubKind: iPhone
|
||||
- m_Textures: []
|
||||
m_Width: 58
|
||||
m_Height: 58
|
||||
m_Kind: 1
|
||||
m_SubKind: iPad
|
||||
- m_Textures: []
|
||||
m_Width: 29
|
||||
m_Height: 29
|
||||
m_Kind: 1
|
||||
m_SubKind: iPad
|
||||
- m_Textures: []
|
||||
m_Width: 60
|
||||
m_Height: 60
|
||||
m_Kind: 2
|
||||
m_SubKind: iPhone
|
||||
- m_Textures: []
|
||||
m_Width: 40
|
||||
m_Height: 40
|
||||
m_Kind: 2
|
||||
m_SubKind: iPhone
|
||||
- m_Textures: []
|
||||
m_Width: 40
|
||||
m_Height: 40
|
||||
m_Kind: 2
|
||||
m_SubKind: iPad
|
||||
- m_Textures: []
|
||||
m_Width: 20
|
||||
m_Height: 20
|
||||
m_Kind: 2
|
||||
m_SubKind: iPad
|
||||
- m_Textures: []
|
||||
m_Width: 1024
|
||||
m_Height: 1024
|
||||
m_Kind: 4
|
||||
m_SubKind: App Store
|
||||
- m_BuildTarget: Android
|
||||
m_Icons:
|
||||
- m_Textures: []
|
||||
m_Width: 432
|
||||
m_Height: 432
|
||||
m_Kind: 2
|
||||
m_SubKind:
|
||||
- m_Textures: []
|
||||
m_Width: 324
|
||||
m_Height: 324
|
||||
m_Kind: 2
|
||||
m_SubKind:
|
||||
- m_Textures: []
|
||||
m_Width: 216
|
||||
m_Height: 216
|
||||
m_Kind: 2
|
||||
m_SubKind:
|
||||
- m_Textures: []
|
||||
m_Width: 162
|
||||
m_Height: 162
|
||||
m_Kind: 2
|
||||
m_SubKind:
|
||||
- m_Textures: []
|
||||
m_Width: 108
|
||||
m_Height: 108
|
||||
m_Kind: 2
|
||||
m_SubKind:
|
||||
- m_Textures: []
|
||||
m_Width: 81
|
||||
m_Height: 81
|
||||
m_Kind: 2
|
||||
m_SubKind:
|
||||
- m_Textures: []
|
||||
m_Width: 192
|
||||
m_Height: 192
|
||||
m_Kind: 1
|
||||
m_SubKind:
|
||||
- m_Textures: []
|
||||
m_Width: 144
|
||||
m_Height: 144
|
||||
m_Kind: 1
|
||||
m_SubKind:
|
||||
- m_Textures: []
|
||||
m_Width: 96
|
||||
m_Height: 96
|
||||
m_Kind: 1
|
||||
m_SubKind:
|
||||
- m_Textures: []
|
||||
m_Width: 72
|
||||
m_Height: 72
|
||||
m_Kind: 1
|
||||
m_SubKind:
|
||||
- m_Textures: []
|
||||
m_Width: 48
|
||||
m_Height: 48
|
||||
m_Kind: 1
|
||||
m_SubKind:
|
||||
- m_Textures: []
|
||||
m_Width: 36
|
||||
m_Height: 36
|
||||
m_Kind: 1
|
||||
m_SubKind:
|
||||
- m_Textures: []
|
||||
m_Width: 192
|
||||
m_Height: 192
|
||||
m_Kind: 0
|
||||
m_SubKind:
|
||||
- m_Textures: []
|
||||
m_Width: 144
|
||||
m_Height: 144
|
||||
m_Kind: 0
|
||||
m_SubKind:
|
||||
- m_Textures: []
|
||||
m_Width: 96
|
||||
m_Height: 96
|
||||
m_Kind: 0
|
||||
m_SubKind:
|
||||
- m_Textures: []
|
||||
m_Width: 72
|
||||
m_Height: 72
|
||||
m_Kind: 0
|
||||
m_SubKind:
|
||||
- m_Textures: []
|
||||
m_Width: 48
|
||||
m_Height: 48
|
||||
m_Kind: 0
|
||||
m_SubKind:
|
||||
- m_Textures: []
|
||||
m_Width: 36
|
||||
m_Height: 36
|
||||
m_Kind: 0
|
||||
m_SubKind:
|
||||
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:
|
||||
switchNetLibKey:
|
||||
switchSocketMemoryPoolSize: 6144
|
||||
switchSocketAllocatorPoolSize: 128
|
||||
switchSocketConcurrencyLimit: 14
|
||||
switchScreenResolutionBehavior: 2
|
||||
switchUseCPUProfiler: 0
|
||||
switchEnableFileSystemTrace: 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: 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
|
||||
switchEnableTouchScreen: 1
|
||||
switchSocketConfigEnabled: 0
|
||||
switchTcpInitialSendBufferSize: 32
|
||||
switchTcpInitialReceiveBufferSize: 64
|
||||
switchTcpAutoSendBufferSizeMax: 256
|
||||
switchTcpAutoReceiveBufferSizeMax: 256
|
||||
switchUdpSendBufferSize: 9
|
||||
switchUdpReceiveBufferSize: 42
|
||||
switchSocketBufferEfficiency: 4
|
||||
switchSocketInitializeEnabled: 1
|
||||
switchNetworkInterfaceManagerInitializeEnabled: 1
|
||||
switchDisableHTCSPlayerConnection: 0
|
||||
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:
|
||||
EmbeddedLinux: 1
|
||||
GameCoreScarlett: 1
|
||||
GameCoreXboxOne: 1
|
||||
Nintendo Switch: 1
|
||||
PS4: 1
|
||||
PS5: 1
|
||||
QNX: 1
|
||||
Stadia: 1
|
||||
VisionOS: 1
|
||||
WebGL: 1
|
||||
Windows Store Apps: 1
|
||||
XboxOne: 1
|
||||
iPhone: 1
|
||||
tvOS: 1
|
||||
incrementalIl2cppBuild: {}
|
||||
suppressCommonWarnings: 1
|
||||
allowUnsafeCode: 0
|
||||
useDeterministicCompilation: 1
|
||||
additionalIl2CppArgs:
|
||||
scriptingRuntimeVersion: 1
|
||||
gcIncremental: 1
|
||||
gcWBarrierValidation: 0
|
||||
apiCompatibilityLevelPerPlatform: {}
|
||||
m_RenderingPath: 1
|
||||
m_MobileRenderingPath: 1
|
||||
metroPackageName: MeowMentDebugTool
|
||||
metroPackageVersion:
|
||||
metroCertificatePath:
|
||||
metroCertificatePassword:
|
||||
metroCertificateSubject:
|
||||
metroCertificateIssuer:
|
||||
metroCertificateNotAfter: 0000000000000000
|
||||
metroApplicationDescription: MeowMentDebugTool
|
||||
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
|
||||
syncCapabilities: 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
|
||||
hmiLogStartupTiming: 0
|
||||
hmiCpuConfiguration:
|
||||
apiCompatibilityLevel: 6
|
||||
activeInputHandler: 0
|
||||
windowsGamepadBackendHint: 0
|
||||
cloudProjectId:
|
||||
framebufferDepthMemorylessMode: 0
|
||||
qualitySettingsNames: []
|
||||
projectName:
|
||||
organizationId:
|
||||
cloudEnabled: 0
|
||||
legacyClampBlendShapeWeights: 0
|
||||
hmiLoadingImage: {fileID: 0}
|
||||
platformRequiresReadableAssets: 0
|
||||
virtualTexturingSupportEnabled: 0
|
||||
insecureHttpOption: 0
|
||||
2
ProjectSettings/ProjectVersion.txt
Normal file
2
ProjectSettings/ProjectVersion.txt
Normal file
@ -0,0 +1,2 @@
|
||||
m_EditorVersion: 2022.3.62f3
|
||||
m_EditorVersionWithRevision: 2022.3.62f3 (96770f904ca7)
|
||||
234
ProjectSettings/QualitySettings.asset
Normal file
234
ProjectSettings/QualitySettings.asset
Normal file
@ -0,0 +1,234 @@
|
||||
%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
|
||||
GameCoreScarlett: 5
|
||||
GameCoreXboxOne: 5
|
||||
Nintendo 3DS: 5
|
||||
Nintendo Switch: 5
|
||||
PS4: 5
|
||||
PS5: 5
|
||||
Stadia: 5
|
||||
Standalone: 5
|
||||
WebGL: 3
|
||||
Windows Store Apps: 5
|
||||
XboxOne: 5
|
||||
iPhone: 2
|
||||
tvOS: 2
|
||||
121
ProjectSettings/SceneTemplateSettings.json
Normal file
121
ProjectSettings/SceneTemplateSettings.json
Normal file
@ -0,0 +1,121 @@
|
||||
{
|
||||
"templatePinStates": [],
|
||||
"dependencyTypeInfos": [
|
||||
{
|
||||
"userAdded": false,
|
||||
"type": "UnityEngine.AnimationClip",
|
||||
"defaultInstantiationMode": 0
|
||||
},
|
||||
{
|
||||
"userAdded": false,
|
||||
"type": "UnityEditor.Animations.AnimatorController",
|
||||
"defaultInstantiationMode": 0
|
||||
},
|
||||
{
|
||||
"userAdded": false,
|
||||
"type": "UnityEngine.AnimatorOverrideController",
|
||||
"defaultInstantiationMode": 0
|
||||
},
|
||||
{
|
||||
"userAdded": false,
|
||||
"type": "UnityEditor.Audio.AudioMixerController",
|
||||
"defaultInstantiationMode": 0
|
||||
},
|
||||
{
|
||||
"userAdded": false,
|
||||
"type": "UnityEngine.ComputeShader",
|
||||
"defaultInstantiationMode": 1
|
||||
},
|
||||
{
|
||||
"userAdded": false,
|
||||
"type": "UnityEngine.Cubemap",
|
||||
"defaultInstantiationMode": 0
|
||||
},
|
||||
{
|
||||
"userAdded": false,
|
||||
"type": "UnityEngine.GameObject",
|
||||
"defaultInstantiationMode": 0
|
||||
},
|
||||
{
|
||||
"userAdded": false,
|
||||
"type": "UnityEditor.LightingDataAsset",
|
||||
"defaultInstantiationMode": 0
|
||||
},
|
||||
{
|
||||
"userAdded": false,
|
||||
"type": "UnityEngine.LightingSettings",
|
||||
"defaultInstantiationMode": 0
|
||||
},
|
||||
{
|
||||
"userAdded": false,
|
||||
"type": "UnityEngine.Material",
|
||||
"defaultInstantiationMode": 0
|
||||
},
|
||||
{
|
||||
"userAdded": false,
|
||||
"type": "UnityEditor.MonoScript",
|
||||
"defaultInstantiationMode": 1
|
||||
},
|
||||
{
|
||||
"userAdded": false,
|
||||
"type": "UnityEngine.PhysicMaterial",
|
||||
"defaultInstantiationMode": 0
|
||||
},
|
||||
{
|
||||
"userAdded": false,
|
||||
"type": "UnityEngine.PhysicsMaterial2D",
|
||||
"defaultInstantiationMode": 0
|
||||
},
|
||||
{
|
||||
"userAdded": false,
|
||||
"type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile",
|
||||
"defaultInstantiationMode": 0
|
||||
},
|
||||
{
|
||||
"userAdded": false,
|
||||
"type": "UnityEngine.Rendering.PostProcessing.PostProcessResources",
|
||||
"defaultInstantiationMode": 0
|
||||
},
|
||||
{
|
||||
"userAdded": false,
|
||||
"type": "UnityEngine.Rendering.VolumeProfile",
|
||||
"defaultInstantiationMode": 0
|
||||
},
|
||||
{
|
||||
"userAdded": false,
|
||||
"type": "UnityEditor.SceneAsset",
|
||||
"defaultInstantiationMode": 1
|
||||
},
|
||||
{
|
||||
"userAdded": false,
|
||||
"type": "UnityEngine.Shader",
|
||||
"defaultInstantiationMode": 1
|
||||
},
|
||||
{
|
||||
"userAdded": false,
|
||||
"type": "UnityEngine.ShaderVariantCollection",
|
||||
"defaultInstantiationMode": 1
|
||||
},
|
||||
{
|
||||
"userAdded": false,
|
||||
"type": "UnityEngine.Texture",
|
||||
"defaultInstantiationMode": 0
|
||||
},
|
||||
{
|
||||
"userAdded": false,
|
||||
"type": "UnityEngine.Texture2D",
|
||||
"defaultInstantiationMode": 0
|
||||
},
|
||||
{
|
||||
"userAdded": false,
|
||||
"type": "UnityEngine.Timeline.TimelineAsset",
|
||||
"defaultInstantiationMode": 0
|
||||
}
|
||||
],
|
||||
"defaultDependencyTypeInfo": {
|
||||
"userAdded": false,
|
||||
"type": "<default_scene_template_dependencies>",
|
||||
"defaultInstantiationMode": 1
|
||||
},
|
||||
"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