├── .gitignore
├── .idea
└── .idea.DebugCommandExecutor
│ └── .idea
│ ├── .gitignore
│ ├── encodings.xml
│ ├── indexLayout.xml
│ ├── projectSettingsUpdater.xml
│ └── vcs.xml
├── Assets
├── DebugCommandExecutor.meta
├── DebugCommandExecutor
│ ├── Editor.meta
│ ├── Editor
│ │ ├── DebugCommandExecutor.Editor.asmdef
│ │ ├── DebugCommandExecutor.Editor.asmdef.meta
│ │ ├── DebugCommandWindow.cs
│ │ └── DebugCommandWindow.cs.meta
│ ├── LICENSE.md
│ ├── LICENSE.md.meta
│ ├── Runtime.meta
│ ├── Runtime
│ │ ├── DebugCommand.cs
│ │ ├── DebugCommand.cs.meta
│ │ ├── DebugCommandAttribute.cs
│ │ ├── DebugCommandAttribute.cs.meta
│ │ ├── DebugCommandExecutor.asmdef
│ │ ├── DebugCommandExecutor.asmdef.meta
│ │ ├── RemoteExecutor.cs
│ │ ├── RemoteExecutor.cs.meta
│ │ ├── TypeExtensions.cs
│ │ └── TypeExtensions.cs.meta
│ ├── package.json
│ └── package.json.meta
├── Development.meta
└── Development
│ ├── SampleScene.cs
│ ├── SampleScene.cs.meta
│ ├── SampleScene.unity
│ ├── SampleScene.unity.meta
│ ├── TestCommands.cs
│ └── TestCommands.cs.meta
├── LICENSE
├── Packages
├── manifest.json
└── packages-lock.json
├── ProjectSettings
├── AudioManager.asset
├── ClusterInputManager.asset
├── DynamicsManager.asset
├── EditorBuildSettings.asset
├── EditorSettings.asset
├── GraphicsSettings.asset
├── InputManager.asset
├── MemorySettings.asset
├── MultiplayerManager.asset
├── NavMeshAreas.asset
├── PackageManagerSettings.asset
├── Packages
│ └── com.unity.testtools.codecoverage
│ │ └── Settings.json
├── Physics2DSettings.asset
├── PresetManager.asset
├── ProjectSettings.asset
├── ProjectVersion.txt
├── QualitySettings.asset
├── SceneTemplateSettings.json
├── TagManager.asset
├── TimeManager.asset
├── UnityConnectSettings.asset
├── VFXManager.asset
├── VersionControlSettings.asset
└── XRSettings.asset
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 | # This .gitignore file should be placed at the root of your Unity project directory
2 | #
3 | # Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore
4 | #
5 | /[Ll]ibrary/
6 | /[Tt]emp/
7 | /[Oo]bj/
8 | /[Bb]uild/
9 | /[Bb]uilds/
10 | /[Ll]ogs/
11 | /[Uu]ser[Ss]ettings/
12 |
13 | # MemoryCaptures can get excessive in size.
14 | # They also could contain extremely sensitive data
15 | /[Mm]emoryCaptures/
16 |
17 | # Recordings can get excessive in size
18 | /[Rr]ecordings/
19 |
20 | # Uncomment this line if you wish to ignore the asset store tools plugin
21 | # /[Aa]ssets/AssetStoreTools*
22 |
23 | # Autogenerated Jetbrains Rider plugin
24 | /[Aa]ssets/Plugins/Editor/JetBrains*
25 |
26 | # Visual Studio cache directory
27 | .vs/
28 |
29 | # Gradle cache directory
30 | .gradle/
31 |
32 | # Autogenerated VS/MD/Consulo solution and project files
33 | ExportedObj/
34 | .consulo/
35 | *.csproj
36 | *.unityproj
37 | *.sln
38 | *.suo
39 | *.tmp
40 | *.user
41 | *.userprefs
42 | *.pidb
43 | *.booproj
44 | *.svd
45 | *.pdb
46 | *.mdb
47 | *.opendb
48 | *.VC.db
49 |
50 | # Unity3D generated meta files
51 | *.pidb.meta
52 | *.pdb.meta
53 | *.mdb.meta
54 |
55 | # Unity3D generated file on crash reports
56 | sysinfo.txt
57 |
58 | # Builds
59 | *.apk
60 | *.aab
61 | *.unitypackage
62 | *.app
63 |
64 | # Crashlytics generated file
65 | crashlytics-build.properties
66 |
67 | # Packed Addressables
68 | /[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin*
69 |
70 | # Temporary auto-generated Android Assets
71 | /[Aa]ssets/[Ss]treamingAssets/aa.meta
72 | /[Aa]ssets/[Ss]treamingAssets/aa/*
73 |
74 | mono_crash.*
75 |
--------------------------------------------------------------------------------
/.idea/.idea.DebugCommandExecutor/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # GitHub Copilot persisted chat sessions
2 | /copilot/chatSessions
3 |
--------------------------------------------------------------------------------
/.idea/.idea.DebugCommandExecutor/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.idea/.idea.DebugCommandExecutor/.idea/indexLayout.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/.idea.DebugCommandExecutor/.idea/projectSettingsUpdater.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/.idea.DebugCommandExecutor/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Assets/DebugCommandExecutor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 17133ea10bb92494c85b127860492eb5
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/DebugCommandExecutor/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 44038fb8c8ea84bcbbe557a5e5d1183e
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/DebugCommandExecutor/Editor/DebugCommandExecutor.Editor.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "DebugCommandExecutor.Editor",
3 | "rootNamespace": "",
4 | "references": [
5 | "GUID:2c01821558eaa47c38a9eda194b0e932"
6 | ],
7 | "includePlatforms": [
8 | "Editor"
9 | ],
10 | "excludePlatforms": [],
11 | "allowUnsafeCode": false,
12 | "overrideReferences": false,
13 | "precompiledReferences": [],
14 | "autoReferenced": true,
15 | "defineConstraints": [],
16 | "versionDefines": [],
17 | "noEngineReferences": false
18 | }
--------------------------------------------------------------------------------
/Assets/DebugCommandExecutor/Editor/DebugCommandExecutor.Editor.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: dccb047bbbe694b6897a87ccfda54f4a
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/DebugCommandExecutor/Editor/DebugCommandWindow.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Reflection;
5 | using UnityEditor;
6 | using UnityEditor.Networking.PlayerConnection;
7 | using UnityEngine;
8 |
9 | namespace DebugCommandExecutor.Editor
10 | {
11 | public class DebugCommandWindow : EditorWindow
12 | {
13 | [MenuItem("Tools/Debug Command Executor/Window")]
14 | protected static void ShowWindow()
15 | {
16 | var window = GetWindow();
17 | window.titleContent = new GUIContent("Debug Command Window");
18 | window.Show();
19 | }
20 |
21 | private const int HistoryMax = 30;
22 | private const int AutocompleteMinLength = 2;
23 | private static string EditorPrefsHistoryKey => $"DebugCommand.{Application.productName}";
24 | private static readonly Dictionary> AutocompleteCache = new(StringComparer.OrdinalIgnoreCase);
25 |
26 | private List _history;
27 | private TextEditor _textEditor;
28 |
29 | private int _recipient;
30 | private string _text;
31 | private bool _refocusNextFrame;
32 | private int _focusHistory = -1;
33 | private int _focusAutocomplete = -1;
34 | private Vector2 _autocompleteScrollPosition;
35 | private IReadOnlyList _autoCompleteMethods = new List();
36 | private string _inputMethodName;
37 |
38 | protected void OnEnable()
39 | {
40 | EditorConnection.instance.Initialize();
41 |
42 | var editorField = typeof(EditorGUI).GetField("s_RecycledEditor", BindingFlags.Static | BindingFlags.NonPublic);
43 | _textEditor = editorField?.GetValue(null) as TextEditor;
44 | }
45 |
46 | protected void OnDisable()
47 | {
48 | EditorConnection.instance.DisconnectAll();
49 | }
50 |
51 | protected void Awake()
52 | {
53 | _history = EditorPrefs.GetString(EditorPrefsHistoryKey)
54 | .Split("\n")
55 | .ToList();
56 | }
57 |
58 | protected void OnGUI()
59 | {
60 | var targetButtonStyle = new GUIStyle(GUI.skin.button)
61 | {
62 | fontSize = 16,
63 | fixedHeight = 26,
64 | fixedWidth = 80,
65 | };
66 |
67 | var messageTextFieldStyle = new GUIStyle(EditorStyles.textField)
68 | {
69 | fontSize = 16,
70 | fixedHeight = 26,
71 | };
72 |
73 | var autocompleteButtonStyle = new GUIStyle(GUI.skin.button)
74 | {
75 | fontSize = 12,
76 | fixedHeight = 20,
77 | };
78 |
79 | var autocompleteSelectingButtonStyle = new GUIStyle(GUI.skin.button)
80 | {
81 | fontSize = 12,
82 | fixedHeight = 20,
83 | fontStyle = FontStyle.Bold,
84 | };
85 |
86 | var refocus = false;
87 |
88 | {
89 | if (_refocusNextFrame && Event.current.type == EventType.Repaint)
90 | {
91 | _refocusNextFrame = false;
92 | refocus = true;
93 | }
94 | }
95 |
96 | // event
97 | {
98 | var e = Event.current;
99 | if (e.type == EventType.KeyDown && e.keyCode == KeyCode.Return)
100 | {
101 | GUI.FocusControl(null);
102 | Send();
103 | refocus = true;
104 | }
105 |
106 | if (e.type == EventType.KeyDown && e.keyCode == KeyCode.DownArrow)
107 | {
108 | e.Use();
109 |
110 | GUI.FocusControl(null);
111 | if (0 <= _focusHistory - 1 && _focusHistory - 1 < _history.Count)
112 | {
113 | _focusHistory -= 1;
114 | _text = _history[_focusHistory];
115 | }
116 |
117 | _refocusNextFrame = true;
118 | }
119 | else if (e.type == EventType.KeyDown && e.keyCode == KeyCode.UpArrow)
120 | {
121 | e.Use();
122 |
123 | GUI.FocusControl(null);
124 | if (_focusHistory + 1 < _history.Count)
125 | {
126 | _focusHistory += 1;
127 | _text = _history[_focusHistory];
128 | }
129 |
130 | _refocusNextFrame = true;
131 | }
132 |
133 | if (e.type == EventType.KeyDown && e.keyCode == KeyCode.Tab && e.shift)
134 | {
135 | e.Use();
136 |
137 | GUI.FocusControl(null);
138 | if (_autoCompleteMethods.Count > 0)
139 | {
140 | _focusAutocomplete = _focusAutocomplete > 0 ? _focusAutocomplete - 1 : _autoCompleteMethods.Count - 1;
141 | var autoCompleteMethod = _autoCompleteMethods[_focusAutocomplete];
142 | var parameterInfos = autoCompleteMethod.MethodInfo.GetParameters();
143 | _text = autoCompleteMethod.MethodInfo.Name + (parameterInfos.Length > 0 ? " " : "");
144 | }
145 |
146 | _refocusNextFrame = true;
147 | }
148 | else if (e.type == EventType.KeyDown && e.keyCode == KeyCode.Tab)
149 | {
150 | e.Use();
151 |
152 | GUI.FocusControl(null);
153 | if (_autoCompleteMethods.Count > 0)
154 | {
155 | _focusAutocomplete = _focusAutocomplete + 1 < _autoCompleteMethods.Count ? _focusAutocomplete + 1 : 0;
156 | var autoCompleteMethod = _autoCompleteMethods[_focusAutocomplete];
157 | var parameterInfos = autoCompleteMethod.MethodInfo.GetParameters();
158 | _text = autoCompleteMethod.MethodInfo.Name + (parameterInfos.Length > 0 ? " " : "");
159 | }
160 |
161 | _refocusNextFrame = true;
162 | }
163 |
164 | if (e.type == EventType.KeyDown && e.keyCode == KeyCode.Escape)
165 | {
166 | e.Use();
167 |
168 | FocusGameWindowIfNeed();
169 | }
170 | }
171 |
172 | // gui
173 | {
174 | var validate = Validate();
175 | var prevText = _text;
176 |
177 | using (new EditorGUILayout.HorizontalScope())
178 | {
179 | _recipient = GUILayout.SelectionGrid(_recipient, new[] { "Editor", "Player" }, 2, targetButtonStyle);
180 |
181 | if (string.IsNullOrEmpty(validate))
182 | {
183 | var userPrevInput = _text;
184 | GUI.SetNextControlName("MessageTextField");
185 | _text = EditorGUILayout.TextField(_text, messageTextFieldStyle);
186 | if (_text != userPrevInput)
187 | {
188 | _focusHistory = -1;
189 | _focusAutocomplete = -1;
190 | }
191 | }
192 | else
193 | {
194 | GUI.FocusControl(null);
195 | _text = string.Empty;
196 | using (new EditorGUI.DisabledGroupScope(true))
197 | {
198 | EditorGUILayout.TextField(validate, messageTextFieldStyle);
199 | }
200 | }
201 | }
202 |
203 | if (_text != prevText)
204 | {
205 | _autoCompleteMethods = UpdateAutoComplete(_text);
206 | _inputMethodName = _text.Split(' ')[0];
207 | }
208 |
209 | if (_autoCompleteMethods.Count > 0)
210 | {
211 | EditorGUILayout.Space();
212 |
213 | // AutoComplete
214 | using (var scrollView = new EditorGUILayout.ScrollViewScope(_autocompleteScrollPosition))
215 | {
216 | for (var i = 0; i < _autoCompleteMethods.Count; i++)
217 | {
218 | var autoCompleteMethod = _autoCompleteMethods[i];
219 | var methodName = autoCompleteMethod.MethodInfo.Name;
220 | var parameterInfos = autoCompleteMethod.MethodInfo.GetParameters();
221 | var text = $"{methodName}({DebugCommand.HumanReadableArguments(parameterInfos)})";
222 |
223 | if (!string.IsNullOrEmpty(autoCompleteMethod.Attribute.Summary))
224 | {
225 | text += $" - {autoCompleteMethod.Attribute.Summary}";
226 | }
227 |
228 | var isFocused = (i == _focusAutocomplete) || (_focusAutocomplete == -1 && string.Equals(methodName, _inputMethodName, StringComparison.InvariantCultureIgnoreCase));
229 | if (GUILayout.Button(text, isFocused ? autocompleteSelectingButtonStyle : autocompleteButtonStyle))
230 | {
231 | GUI.FocusControl(null);
232 | _text = methodName + (parameterInfos.Length > 0 ? " " : "");
233 | _refocusNextFrame = true;
234 | }
235 | }
236 |
237 | _autocompleteScrollPosition = scrollView.scrollPosition;
238 | }
239 | }
240 | }
241 |
242 | // event
243 | {
244 | if (_refocusNextFrame)
245 | {
246 | Repaint();
247 | }
248 | else if (refocus)
249 | {
250 | GUI.FocusControl("MessageTextField");
251 |
252 | if (_textEditor != null && _text != null)
253 | {
254 | _textEditor.cursorIndex = _text.Length;
255 | _textEditor.selectIndex = _text.Length;
256 | }
257 | }
258 | }
259 | }
260 |
261 | private static IReadOnlyList UpdateAutoComplete(string text)
262 | {
263 | var methodName = text.Split(' ')[0].Trim();
264 |
265 | if (methodName.Length < AutocompleteMinLength)
266 | {
267 | return new List();
268 | }
269 |
270 | var start = methodName.Substring(0, AutocompleteMinLength);
271 | if (!AutocompleteCache.TryGetValue(start, out var cache))
272 | {
273 | cache = DebugCommand.DebugMethods
274 | .Where(x => x.Key.Contains(start, StringComparison.OrdinalIgnoreCase))
275 | .ToLookup(
276 | x => GetSubstringAfter(x.Key, start),
277 | x => x.Value
278 | );
279 |
280 | AutocompleteCache[start] = cache;
281 | }
282 |
283 | if (methodName.Length == AutocompleteMinLength)
284 | {
285 | return Sort(cache);
286 | }
287 |
288 | var remain = methodName.Substring(AutocompleteMinLength, methodName.Length - AutocompleteMinLength);
289 | return Sort(cache.Where(x => x.Key.StartsWith(remain, StringComparison.OrdinalIgnoreCase)));
290 |
291 | IReadOnlyList Sort(IEnumerable> elements)
292 | {
293 | return elements
294 | .SelectMany(x => x)
295 | .OrderBy(x => x.MethodInfo.Name.StartsWith(text, StringComparison.OrdinalIgnoreCase) ? 0 : 1)
296 | .ToList();
297 | }
298 | }
299 |
300 | private static string GetSubstringAfter(string target, string searchString)
301 | {
302 | var index = target.IndexOf(searchString, StringComparison.OrdinalIgnoreCase);
303 | if (index != -1)
304 | {
305 | return target.Substring(index + searchString.Length);
306 | }
307 |
308 | return string.Empty;
309 | }
310 |
311 | private string Validate()
312 | {
313 | if (_recipient == 0)
314 | {
315 | return ValidateSendToEditor();
316 | }
317 | else
318 | {
319 | return ValidateSendToPlayer();
320 | }
321 | }
322 |
323 | private void Send()
324 | {
325 | var message = _text.Trim();
326 |
327 | if (string.IsNullOrWhiteSpace(message)) return;
328 | if (!string.IsNullOrEmpty(Validate())) return;
329 |
330 | if (_recipient == 0)
331 | {
332 | SendToEditor(message);
333 | }
334 | else
335 | {
336 | SendToPlayer(message);
337 | }
338 |
339 | SaveHistory(message);
340 |
341 | _text = string.Empty;
342 | _focusHistory = -1;
343 | _autoCompleteMethods = new List();
344 | _focusAutocomplete = -1;
345 |
346 | FocusGameWindowIfNeed();
347 | }
348 |
349 | private void FocusGameWindowIfNeed()
350 | {
351 | if (Application.isPlaying && _recipient == 0)
352 | {
353 | EditorApplication.delayCall += () =>
354 | {
355 | EditorApplication.ExecuteMenuItem("Window/General/Game");
356 | };
357 | }
358 | }
359 |
360 | private string ValidateSendToEditor()
361 | {
362 | if (!Application.isPlaying) return "not playing";
363 | return null;
364 | }
365 |
366 | private static void SendToEditor(string message)
367 | {
368 | DebugCommand.Execute(message);
369 | }
370 |
371 | private string ValidateSendToPlayer()
372 | {
373 | var connection = EditorConnection.instance;
374 | if (connection.ConnectedPlayers.Count == 0) return "no player";
375 | return null;
376 | }
377 |
378 | private static void SendToPlayer(string message)
379 | {
380 | var connection = EditorConnection.instance;
381 | var bytes = System.Text.Encoding.UTF8.GetBytes(message);
382 | connection.Send(RemoteExecutor.DebugCommandMessage, bytes);
383 | }
384 |
385 | private void SaveHistory(string newMessage)
386 | {
387 | _history.Remove(newMessage);
388 | _history.Insert(0, newMessage);
389 |
390 | while (_history.Count > HistoryMax)
391 | {
392 | _history.RemoveAt(_history.Count - 1);
393 | }
394 |
395 | EditorPrefs.SetString(EditorPrefsHistoryKey, string.Join("\n", _history));
396 | }
397 |
398 | protected void OnFocus()
399 | {
400 | EditorGUI.FocusTextInControl("MessageTextField");
401 |
402 | _refocusNextFrame = true;
403 | Repaint();
404 | }
405 | }
406 | }
407 |
--------------------------------------------------------------------------------
/Assets/DebugCommandExecutor/Editor/DebugCommandWindow.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 717f2411a931b47f6ba5d2ecaba33b83
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/DebugCommandExecutor/LICENSE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 kyubuns
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Assets/DebugCommandExecutor/LICENSE.md.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 83ab866081b094bbdb2874beae22faca
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/DebugCommandExecutor/Runtime.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 50effa9db1bc54ec1b4c60f9836c603a
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/DebugCommandExecutor/Runtime/DebugCommand.cs:
--------------------------------------------------------------------------------
1 | #if UNITY_EDITOR || DEVELOPMENT_BUILD
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using System.Reflection;
6 | using System.Text;
7 | #else
8 | using System.Diagnostics;
9 | #endif
10 |
11 | namespace DebugCommandExecutor
12 | {
13 | public static class DebugCommand
14 | {
15 | #if UNITY_EDITOR || DEVELOPMENT_BUILD
16 | public static readonly IReadOnlyDictionary DebugMethods;
17 |
18 | static DebugCommand()
19 | {
20 | var targetAssemblyName = typeof(DebugCommandAttribute).Assembly.FullName;
21 | var debugMethods = new Dictionary(StringComparer.OrdinalIgnoreCase);
22 |
23 | foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
24 | {
25 | if (!assembly.GetReferencedAssemblies().Any(x => string.Equals(x.FullName, targetAssemblyName, StringComparison.Ordinal))) continue;
26 |
27 | foreach (var type in assembly.GetTypes())
28 | {
29 | foreach (var method in type.GetMethods(BindingFlags.Public | BindingFlags.Static))
30 | {
31 | var attribute = method.GetCustomAttribute();
32 | if (attribute == null) continue;
33 |
34 | var debugMethod = new DebugMethod(method, attribute);
35 | debugMethods[method.Name] = debugMethod;
36 | }
37 | }
38 | }
39 |
40 | DebugMethods = debugMethods;
41 | }
42 |
43 | public static void Execute(string text)
44 | {
45 | var input = ParseString(text);
46 | if (input.Length == 0) return;
47 |
48 | var commandName = input[0];
49 | if (!DebugMethods.TryGetValue(commandName, out var debugMethod))
50 | {
51 | UnityEngine.Debug.LogWarning($"DebugCommand | DebugCommand({commandName}) is not found\ninput: {text}");
52 | return;
53 | }
54 |
55 | var parameterInfos = debugMethod.MethodInfo.GetParameters();
56 | var convertedArguments = new object[parameterInfos.Length];
57 | for (var i = 0; i < parameterInfos.Length; i++)
58 | {
59 | string value;
60 | var parameterInfo = parameterInfos[i];
61 | if (i + 1 < input.Length)
62 | {
63 | value = input[i + 1];
64 | }
65 | else if (parameterInfo.HasDefaultValue)
66 | {
67 | convertedArguments[i] = parameterInfo.DefaultValue;
68 | continue;
69 | }
70 | else
71 | {
72 | UnityEngine.Debug.LogWarning($"DebugCommand | DebugCommand({debugMethod.MethodInfo.Name}) needs {parameterInfos.Length} parameters ({HumanReadableArguments(parameterInfos)})\ninput: {text}");
73 | return;
74 | }
75 |
76 | var targetType = parameterInfo.ParameterType;
77 | try
78 | {
79 | if (targetType.IsEnum)
80 | {
81 | if (int.TryParse(value, out var intValue))
82 | {
83 | convertedArguments[i] = Enum.ToObject(targetType, intValue);
84 | continue;
85 | }
86 |
87 | if (Enum.TryParse(targetType, value, true, out var enumValue))
88 | {
89 | convertedArguments[i] = enumValue;
90 | continue;
91 | }
92 | }
93 |
94 | convertedArguments[i] = Convert.ChangeType(value, targetType);
95 | }
96 | catch (FormatException formatException)
97 | {
98 | UnityEngine.Debug.LogWarning($"DebugCommand | Parse Error \"{value}\" to {targetType.GetFriendlyName()} ({formatException.Message})\ninput: {text}");
99 | }
100 | catch (InvalidCastException invalidCastException)
101 | {
102 | UnityEngine.Debug.LogWarning($"DebugCommand | Parse Error \"{value}\" to {targetType.GetFriendlyName()} ({invalidCastException.Message})\ninput: {text}");
103 | }
104 | }
105 |
106 | try
107 | {
108 | debugMethod.MethodInfo.Invoke(null, convertedArguments);
109 | }
110 | catch (Exception e)
111 | {
112 | UnityEngine.Debug.LogException(e);
113 | }
114 | }
115 |
116 | private static string[] ParseString(string input)
117 | {
118 | var result = new List();
119 | var inQuotes = false;
120 | var currentElement = new StringBuilder();
121 |
122 | foreach (var c in input)
123 | {
124 | if (c == '"')
125 | {
126 | inQuotes = !inQuotes;
127 | }
128 | else if (!inQuotes && char.IsWhiteSpace(c))
129 | {
130 | if (currentElement.Length == 0) continue;
131 | result.Add(currentElement.ToString());
132 | currentElement.Clear();
133 | }
134 | else
135 | {
136 | currentElement.Append(c);
137 | }
138 | }
139 |
140 | if (currentElement.Length > 0)
141 | {
142 | result.Add(currentElement.ToString());
143 | }
144 |
145 | return result.ToArray();
146 | }
147 |
148 | public static string HumanReadableArguments(ParameterInfo[] parameterInfos)
149 | {
150 | return string.Join(", ", parameterInfos.Select(x =>
151 | {
152 | if (x.HasDefaultValue)
153 | {
154 | return $"{x.ParameterType.GetFriendlyName()} {x.Name} = {x.DefaultValue}";
155 | }
156 | else
157 | {
158 | return $"{x.ParameterType.GetFriendlyName()} {x.Name}";
159 | }
160 | }));
161 | }
162 |
163 | public class DebugMethod
164 | {
165 | public MethodInfo MethodInfo { get; }
166 | public DebugCommandAttribute Attribute { get; }
167 |
168 | public DebugMethod(MethodInfo methodInfo, DebugCommandAttribute attribute)
169 | {
170 | MethodInfo = methodInfo;
171 | Attribute = attribute;
172 | }
173 | }
174 | #else
175 | [Conditional("UNITY_EDITOR"), Conditional("DEVELOPMENT_BUILD")]
176 | public static void Execute(string text)
177 | {
178 | }
179 | #endif
180 | }
181 | }
182 |
--------------------------------------------------------------------------------
/Assets/DebugCommandExecutor/Runtime/DebugCommand.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 14cff5a8181542a2867d5373f9f36881
3 | timeCreated: 1709448084
--------------------------------------------------------------------------------
/Assets/DebugCommandExecutor/Runtime/DebugCommandAttribute.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics;
3 | using UnityEngine.Scripting;
4 |
5 | namespace DebugCommandExecutor
6 | {
7 | [Conditional("UNITY_EDITOR"), Conditional("DEVELOPMENT_BUILD")]
8 | [AttributeUsage(AttributeTargets.Method)]
9 | public class DebugCommandAttribute : PreserveAttribute
10 | {
11 | public string Summary { get; }
12 |
13 | public DebugCommandAttribute()
14 | {
15 | Summary = string.Empty;
16 | }
17 |
18 | public DebugCommandAttribute(string summary)
19 | {
20 | Summary = summary;
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Assets/DebugCommandExecutor/Runtime/DebugCommandAttribute.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ed0be10e039f44657ab1c8e2b43cf9cb
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/DebugCommandExecutor/Runtime/DebugCommandExecutor.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "DebugCommandExecutor"
3 | }
4 |
--------------------------------------------------------------------------------
/Assets/DebugCommandExecutor/Runtime/DebugCommandExecutor.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2c01821558eaa47c38a9eda194b0e932
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/DebugCommandExecutor/Runtime/RemoteExecutor.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics;
3 | using UnityEngine;
4 | using UnityEngine.Networking.PlayerConnection;
5 |
6 | namespace DebugCommandExecutor
7 | {
8 | public class RemoteExecutor : MonoBehaviour
9 | {
10 | #if UNITY_EDITOR || DEVELOPMENT_BUILD
11 | public static readonly Guid DebugCommandMessage = Guid.Parse("889c3bf6-de3c-4024-aaf3-d6859c32a43f");
12 |
13 | [Conditional("DEVELOPMENT_BUILD")]
14 | [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)]
15 | public static void OnRuntimeInitializeOnLoadMethod()
16 | {
17 | var gameObject = new GameObject("DebugCommand.RemoteExecutor");
18 | gameObject.AddComponent();
19 | DontDestroyOnLoad(gameObject);
20 | }
21 |
22 | protected void OnEnable()
23 | {
24 | var connection = PlayerConnection.instance;
25 | if (connection != null)
26 | {
27 | connection.Register(DebugCommandMessage, OnReceiveTextMessage);
28 | }
29 | }
30 |
31 | protected void OnDisable()
32 | {
33 | var connection = PlayerConnection.instance;
34 | if (connection != null)
35 | {
36 | connection.Unregister(DebugCommandMessage, OnReceiveTextMessage);
37 | }
38 | }
39 |
40 | private static void OnReceiveTextMessage(MessageEventArgs args)
41 | {
42 | var text = System.Text.Encoding.UTF8.GetString(args.data);
43 | DebugCommand.Execute(text);
44 | }
45 | #endif
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/Assets/DebugCommandExecutor/Runtime/RemoteExecutor.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8fb578a2ff3f4529a3f7b52332275a7a
3 | timeCreated: 1709453156
--------------------------------------------------------------------------------
/Assets/DebugCommandExecutor/Runtime/TypeExtensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace DebugCommandExecutor
4 | {
5 | public static class TypeExtensions
6 | {
7 | public static string GetFriendlyName(this Type type)
8 | {
9 | if (type == typeof(int)) return "int";
10 | else if (type == typeof(uint)) return "uint";
11 | else if (type == typeof(short)) return "short";
12 | else if (type == typeof(ushort)) return "ushort";
13 | else if (type == typeof(byte)) return "byte";
14 | else if (type == typeof(sbyte)) return "sbyte";
15 | else if (type == typeof(bool)) return "bool";
16 | else if (type == typeof(long)) return "long";
17 | else if (type == typeof(ulong)) return "ulong";
18 | else if (type == typeof(float)) return "float";
19 | else if (type == typeof(double)) return "double";
20 | else if (type == typeof(decimal)) return "decimal";
21 | else if (type == typeof(string)) return "string";
22 | else return type.Name;
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Assets/DebugCommandExecutor/Runtime/TypeExtensions.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 69278bd8e90b4599a5a3603c48bfb522
3 | timeCreated: 1709462302
--------------------------------------------------------------------------------
/Assets/DebugCommandExecutor/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "dev.kyubuns.debugcommandexecutor",
3 | "displayName": "DebugCommandExecutor",
4 | "version": "1.2.1",
5 | "description": "DebugCommandExecutor",
6 | "unity": "2022.3",
7 | "documentationUrl": "https://github.com/kyubuns/DebugCommandExecutor",
8 | "dependencies": {
9 | },
10 | "author": {
11 | "name": "kyubuns",
12 | "email": "kyubuns@gmail.com",
13 | "url": "https://kyubuns.dev/"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Assets/DebugCommandExecutor/package.json.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7780a10ca28e648fc9bc4365865730b2
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Development.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 49933366a6282457281e8cfa9b351378
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Development/SampleScene.cs:
--------------------------------------------------------------------------------
1 | using DebugCommandExecutor;
2 | using UnityEngine;
3 |
4 | namespace Sandbox
5 | {
6 | public class SampleScene : MonoBehaviour
7 | {
8 | public void Start()
9 | {
10 | DebugCommand.Execute("Echo \"Test Message\"");
11 | DebugCommand.Execute("SpawnCube");
12 | DebugCommand.Execute("SetCubeColor 255 0 0");
13 | DebugCommand.Execute("SetCubePosition 1 0 0");
14 | DebugCommand.Execute("EchoEnum 2");
15 | DebugCommand.Execute("EchoEnum Blue");
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Assets/Development/SampleScene.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d2ed4b5e497de43c18adb57261af8f65
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/Development/SampleScene.unity:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!29 &1
4 | OcclusionCullingSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_OcclusionBakeSettings:
8 | smallestOccluder: 5
9 | smallestHole: 0.25
10 | backfaceThreshold: 100
11 | m_SceneGUID: 00000000000000000000000000000000
12 | m_OcclusionCullingData: {fileID: 0}
13 | --- !u!104 &2
14 | RenderSettings:
15 | m_ObjectHideFlags: 0
16 | serializedVersion: 9
17 | m_Fog: 0
18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
19 | m_FogMode: 3
20 | m_FogDensity: 0.01
21 | m_LinearFogStart: 0
22 | m_LinearFogEnd: 300
23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
26 | m_AmbientIntensity: 1
27 | m_AmbientMode: 0
28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
30 | m_HaloStrength: 0.5
31 | m_FlareStrength: 1
32 | m_FlareFadeSpeed: 3
33 | m_HaloTexture: {fileID: 0}
34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
35 | m_DefaultReflectionMode: 0
36 | m_DefaultReflectionResolution: 128
37 | m_ReflectionBounces: 1
38 | m_ReflectionIntensity: 1
39 | m_CustomReflection: {fileID: 0}
40 | m_Sun: {fileID: 705507994}
41 | m_IndirectSpecularColor: {r: 0.44657844, g: 0.49641222, b: 0.57481676, a: 1}
42 | m_UseRadianceAmbientProbe: 0
43 | --- !u!157 &3
44 | LightmapSettings:
45 | m_ObjectHideFlags: 0
46 | serializedVersion: 12
47 | m_GIWorkflowMode: 1
48 | m_GISettings:
49 | serializedVersion: 2
50 | m_BounceScale: 1
51 | m_IndirectOutputScale: 1
52 | m_AlbedoBoost: 1
53 | m_EnvironmentLightingMode: 0
54 | m_EnableBakedLightmaps: 1
55 | m_EnableRealtimeLightmaps: 0
56 | m_LightmapEditorSettings:
57 | serializedVersion: 12
58 | m_Resolution: 2
59 | m_BakeResolution: 40
60 | m_AtlasSize: 1024
61 | m_AO: 0
62 | m_AOMaxDistance: 1
63 | m_CompAOExponent: 1
64 | m_CompAOExponentDirect: 0
65 | m_ExtractAmbientOcclusion: 0
66 | m_Padding: 2
67 | m_LightmapParameters: {fileID: 0}
68 | m_LightmapsBakeMode: 1
69 | m_TextureCompression: 1
70 | m_FinalGather: 0
71 | m_FinalGatherFiltering: 1
72 | m_FinalGatherRayCount: 256
73 | m_ReflectionCompression: 2
74 | m_MixedBakeMode: 2
75 | m_BakeBackend: 1
76 | m_PVRSampling: 1
77 | m_PVRDirectSampleCount: 32
78 | m_PVRSampleCount: 500
79 | m_PVRBounces: 2
80 | m_PVREnvironmentSampleCount: 500
81 | m_PVREnvironmentReferencePointCount: 2048
82 | m_PVRFilteringMode: 2
83 | m_PVRDenoiserTypeDirect: 0
84 | m_PVRDenoiserTypeIndirect: 0
85 | m_PVRDenoiserTypeAO: 0
86 | m_PVRFilterTypeDirect: 0
87 | m_PVRFilterTypeIndirect: 0
88 | m_PVRFilterTypeAO: 0
89 | m_PVREnvironmentMIS: 0
90 | m_PVRCulling: 1
91 | m_PVRFilteringGaussRadiusDirect: 1
92 | m_PVRFilteringGaussRadiusIndirect: 5
93 | m_PVRFilteringGaussRadiusAO: 2
94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5
95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2
96 | m_PVRFilteringAtrousPositionSigmaAO: 1
97 | m_ExportTrainingData: 0
98 | m_TrainingDataDestination: TrainingData
99 | m_LightProbeSampleCountMultiplier: 4
100 | m_LightingDataAsset: {fileID: 0}
101 | m_LightingSettings: {fileID: 0}
102 | --- !u!196 &4
103 | NavMeshSettings:
104 | serializedVersion: 2
105 | m_ObjectHideFlags: 0
106 | m_BuildSettings:
107 | serializedVersion: 3
108 | agentTypeID: 0
109 | agentRadius: 0.5
110 | agentHeight: 2
111 | agentSlope: 45
112 | agentClimb: 0.4
113 | ledgeDropHeight: 0
114 | maxJumpAcrossDistance: 0
115 | minRegionArea: 2
116 | manualCellSize: 0
117 | cellSize: 0.16666667
118 | manualTileSize: 0
119 | tileSize: 256
120 | buildHeightMesh: 0
121 | maxJobWorkers: 0
122 | preserveTilesOutsideBounds: 0
123 | debug:
124 | m_Flags: 0
125 | m_NavMeshData: {fileID: 0}
126 | --- !u!1 &705507993
127 | GameObject:
128 | m_ObjectHideFlags: 0
129 | m_CorrespondingSourceObject: {fileID: 0}
130 | m_PrefabInstance: {fileID: 0}
131 | m_PrefabAsset: {fileID: 0}
132 | serializedVersion: 6
133 | m_Component:
134 | - component: {fileID: 705507995}
135 | - component: {fileID: 705507994}
136 | m_Layer: 0
137 | m_Name: Directional Light
138 | m_TagString: Untagged
139 | m_Icon: {fileID: 0}
140 | m_NavMeshLayer: 0
141 | m_StaticEditorFlags: 0
142 | m_IsActive: 1
143 | --- !u!108 &705507994
144 | Light:
145 | m_ObjectHideFlags: 0
146 | m_CorrespondingSourceObject: {fileID: 0}
147 | m_PrefabInstance: {fileID: 0}
148 | m_PrefabAsset: {fileID: 0}
149 | m_GameObject: {fileID: 705507993}
150 | m_Enabled: 1
151 | serializedVersion: 10
152 | m_Type: 1
153 | m_Shape: 0
154 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
155 | m_Intensity: 1
156 | m_Range: 10
157 | m_SpotAngle: 30
158 | m_InnerSpotAngle: 21.802082
159 | m_CookieSize: 10
160 | m_Shadows:
161 | m_Type: 2
162 | m_Resolution: -1
163 | m_CustomResolution: -1
164 | m_Strength: 1
165 | m_Bias: 0.05
166 | m_NormalBias: 0.4
167 | m_NearPlane: 0.2
168 | m_CullingMatrixOverride:
169 | e00: 1
170 | e01: 0
171 | e02: 0
172 | e03: 0
173 | e10: 0
174 | e11: 1
175 | e12: 0
176 | e13: 0
177 | e20: 0
178 | e21: 0
179 | e22: 1
180 | e23: 0
181 | e30: 0
182 | e31: 0
183 | e32: 0
184 | e33: 1
185 | m_UseCullingMatrixOverride: 0
186 | m_Cookie: {fileID: 0}
187 | m_DrawHalo: 0
188 | m_Flare: {fileID: 0}
189 | m_RenderMode: 0
190 | m_CullingMask:
191 | serializedVersion: 2
192 | m_Bits: 4294967295
193 | m_RenderingLayerMask: 1
194 | m_Lightmapping: 1
195 | m_LightShadowCasterMode: 0
196 | m_AreaSize: {x: 1, y: 1}
197 | m_BounceIntensity: 1
198 | m_ColorTemperature: 6570
199 | m_UseColorTemperature: 0
200 | m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
201 | m_UseBoundingSphereOverride: 0
202 | m_UseViewFrustumForShadowCasterCull: 1
203 | m_ShadowRadius: 0
204 | m_ShadowAngle: 0
205 | --- !u!4 &705507995
206 | Transform:
207 | m_ObjectHideFlags: 0
208 | m_CorrespondingSourceObject: {fileID: 0}
209 | m_PrefabInstance: {fileID: 0}
210 | m_PrefabAsset: {fileID: 0}
211 | m_GameObject: {fileID: 705507993}
212 | serializedVersion: 2
213 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
214 | m_LocalPosition: {x: 0, y: 3, z: 0}
215 | m_LocalScale: {x: 1, y: 1, z: 1}
216 | m_ConstrainProportionsScale: 0
217 | m_Children: []
218 | m_Father: {fileID: 0}
219 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
220 | --- !u!1 &963194225
221 | GameObject:
222 | m_ObjectHideFlags: 0
223 | m_CorrespondingSourceObject: {fileID: 0}
224 | m_PrefabInstance: {fileID: 0}
225 | m_PrefabAsset: {fileID: 0}
226 | serializedVersion: 6
227 | m_Component:
228 | - component: {fileID: 963194228}
229 | - component: {fileID: 963194227}
230 | - component: {fileID: 963194226}
231 | m_Layer: 0
232 | m_Name: Main Camera
233 | m_TagString: MainCamera
234 | m_Icon: {fileID: 0}
235 | m_NavMeshLayer: 0
236 | m_StaticEditorFlags: 0
237 | m_IsActive: 1
238 | --- !u!81 &963194226
239 | AudioListener:
240 | m_ObjectHideFlags: 0
241 | m_CorrespondingSourceObject: {fileID: 0}
242 | m_PrefabInstance: {fileID: 0}
243 | m_PrefabAsset: {fileID: 0}
244 | m_GameObject: {fileID: 963194225}
245 | m_Enabled: 1
246 | --- !u!20 &963194227
247 | Camera:
248 | m_ObjectHideFlags: 0
249 | m_CorrespondingSourceObject: {fileID: 0}
250 | m_PrefabInstance: {fileID: 0}
251 | m_PrefabAsset: {fileID: 0}
252 | m_GameObject: {fileID: 963194225}
253 | m_Enabled: 1
254 | serializedVersion: 2
255 | m_ClearFlags: 2
256 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
257 | m_projectionMatrixMode: 1
258 | m_GateFitMode: 2
259 | m_FOVAxisMode: 0
260 | m_Iso: 200
261 | m_ShutterSpeed: 0.005
262 | m_Aperture: 16
263 | m_FocusDistance: 10
264 | m_FocalLength: 50
265 | m_BladeCount: 5
266 | m_Curvature: {x: 2, y: 11}
267 | m_BarrelClipping: 0.25
268 | m_Anamorphism: 0
269 | m_SensorSize: {x: 36, y: 24}
270 | m_LensShift: {x: 0, y: 0}
271 | m_NormalizedViewPortRect:
272 | serializedVersion: 2
273 | x: 0
274 | y: 0
275 | width: 1
276 | height: 1
277 | near clip plane: 0.3
278 | far clip plane: 1000
279 | field of view: 60
280 | orthographic: 0
281 | orthographic size: 5
282 | m_Depth: -1
283 | m_CullingMask:
284 | serializedVersion: 2
285 | m_Bits: 4294967295
286 | m_RenderingPath: -1
287 | m_TargetTexture: {fileID: 0}
288 | m_TargetDisplay: 0
289 | m_TargetEye: 3
290 | m_HDR: 1
291 | m_AllowMSAA: 1
292 | m_AllowDynamicResolution: 0
293 | m_ForceIntoRT: 0
294 | m_OcclusionCulling: 1
295 | m_StereoConvergence: 10
296 | m_StereoSeparation: 0.022
297 | --- !u!4 &963194228
298 | Transform:
299 | m_ObjectHideFlags: 0
300 | m_CorrespondingSourceObject: {fileID: 0}
301 | m_PrefabInstance: {fileID: 0}
302 | m_PrefabAsset: {fileID: 0}
303 | m_GameObject: {fileID: 963194225}
304 | serializedVersion: 2
305 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
306 | m_LocalPosition: {x: 0, y: 1, z: -10}
307 | m_LocalScale: {x: 1, y: 1, z: 1}
308 | m_ConstrainProportionsScale: 0
309 | m_Children: []
310 | m_Father: {fileID: 0}
311 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
312 | --- !u!1 &1140753744
313 | GameObject:
314 | m_ObjectHideFlags: 0
315 | m_CorrespondingSourceObject: {fileID: 0}
316 | m_PrefabInstance: {fileID: 0}
317 | m_PrefabAsset: {fileID: 0}
318 | serializedVersion: 6
319 | m_Component:
320 | - component: {fileID: 1140753748}
321 | - component: {fileID: 1140753747}
322 | - component: {fileID: 1140753746}
323 | - component: {fileID: 1140753745}
324 | m_Layer: 0
325 | m_Name: Dummy For Reference
326 | m_TagString: Untagged
327 | m_Icon: {fileID: 0}
328 | m_NavMeshLayer: 0
329 | m_StaticEditorFlags: 0
330 | m_IsActive: 1
331 | --- !u!65 &1140753745
332 | BoxCollider:
333 | m_ObjectHideFlags: 0
334 | m_CorrespondingSourceObject: {fileID: 0}
335 | m_PrefabInstance: {fileID: 0}
336 | m_PrefabAsset: {fileID: 0}
337 | m_GameObject: {fileID: 1140753744}
338 | m_Material: {fileID: 0}
339 | m_IncludeLayers:
340 | serializedVersion: 2
341 | m_Bits: 0
342 | m_ExcludeLayers:
343 | serializedVersion: 2
344 | m_Bits: 0
345 | m_LayerOverridePriority: 0
346 | m_IsTrigger: 0
347 | m_ProvidesContacts: 0
348 | m_Enabled: 1
349 | serializedVersion: 3
350 | m_Size: {x: 1, y: 1, z: 1}
351 | m_Center: {x: 0, y: 0, z: 0}
352 | --- !u!23 &1140753746
353 | MeshRenderer:
354 | m_ObjectHideFlags: 0
355 | m_CorrespondingSourceObject: {fileID: 0}
356 | m_PrefabInstance: {fileID: 0}
357 | m_PrefabAsset: {fileID: 0}
358 | m_GameObject: {fileID: 1140753744}
359 | m_Enabled: 1
360 | m_CastShadows: 1
361 | m_ReceiveShadows: 1
362 | m_DynamicOccludee: 1
363 | m_StaticShadowCaster: 0
364 | m_MotionVectors: 1
365 | m_LightProbeUsage: 1
366 | m_ReflectionProbeUsage: 1
367 | m_RayTracingMode: 2
368 | m_RayTraceProcedural: 0
369 | m_RenderingLayerMask: 1
370 | m_RendererPriority: 0
371 | m_Materials:
372 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
373 | m_StaticBatchInfo:
374 | firstSubMesh: 0
375 | subMeshCount: 0
376 | m_StaticBatchRoot: {fileID: 0}
377 | m_ProbeAnchor: {fileID: 0}
378 | m_LightProbeVolumeOverride: {fileID: 0}
379 | m_ScaleInLightmap: 1
380 | m_ReceiveGI: 1
381 | m_PreserveUVs: 0
382 | m_IgnoreNormalsForChartDetection: 0
383 | m_ImportantGI: 0
384 | m_StitchLightmapSeams: 1
385 | m_SelectedEditorRenderState: 3
386 | m_MinimumChartSize: 4
387 | m_AutoUVMaxDistance: 0.5
388 | m_AutoUVMaxAngle: 89
389 | m_LightmapParameters: {fileID: 0}
390 | m_SortingLayerID: 0
391 | m_SortingLayer: 0
392 | m_SortingOrder: 0
393 | m_AdditionalVertexStreams: {fileID: 0}
394 | --- !u!33 &1140753747
395 | MeshFilter:
396 | m_ObjectHideFlags: 0
397 | m_CorrespondingSourceObject: {fileID: 0}
398 | m_PrefabInstance: {fileID: 0}
399 | m_PrefabAsset: {fileID: 0}
400 | m_GameObject: {fileID: 1140753744}
401 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
402 | --- !u!4 &1140753748
403 | Transform:
404 | m_ObjectHideFlags: 0
405 | m_CorrespondingSourceObject: {fileID: 0}
406 | m_PrefabInstance: {fileID: 0}
407 | m_PrefabAsset: {fileID: 0}
408 | m_GameObject: {fileID: 1140753744}
409 | serializedVersion: 2
410 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
411 | m_LocalPosition: {x: 100, y: 0, z: 0}
412 | m_LocalScale: {x: 1, y: 1, z: 1}
413 | m_ConstrainProportionsScale: 0
414 | m_Children: []
415 | m_Father: {fileID: 0}
416 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
417 | --- !u!1660057539 &9223372036854775807
418 | SceneRoots:
419 | m_ObjectHideFlags: 0
420 | m_Roots:
421 | - {fileID: 963194228}
422 | - {fileID: 705507995}
423 | - {fileID: 1140753748}
424 |
--------------------------------------------------------------------------------
/Assets/Development/SampleScene.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9fc0d4010bbf28b4594072e72b8655ab
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/Development/TestCommands.cs:
--------------------------------------------------------------------------------
1 | using DebugCommandExecutor;
2 | using UnityEngine;
3 |
4 | namespace Sandbox
5 | {
6 | public static class TestCommands
7 | {
8 | [DebugCommand("Show application version")]
9 | public static void ApplicationVersion()
10 | {
11 | Debug.Log($"ApplicationVersion is {Application.version}");
12 | }
13 |
14 | [DebugCommand("Echo text")]
15 | public static void Echo(string text)
16 | {
17 | Debug.Log(text);
18 | }
19 |
20 | [DebugCommand]
21 | public static void Add(int a, int b)
22 | {
23 | Debug.Log($"{a} + {b} = {a + b}");
24 | }
25 |
26 | [DebugCommand]
27 | public static void SpawnCube()
28 | {
29 | var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
30 | cube.name = "Cube";
31 |
32 | Debug.Log("Spawn Cube Success!");
33 | }
34 |
35 | [DebugCommand]
36 | public static void SetCubeColor(int r, int g, int b)
37 | {
38 | var cube = GameObject.Find("Cube");
39 | cube.GetComponent().material.color = new Color32((byte) r, (byte) g, (byte) b, 255);
40 |
41 | Debug.Log($"Set Cube Color ({r}, {g}, {b})");
42 | }
43 |
44 | [DebugCommand]
45 | public static void SetCubePosition(float x, float y, float z)
46 | {
47 | var cube = GameObject.Find("Cube");
48 | cube.transform.position = new Vector3(x, y, z);
49 |
50 | Debug.Log($"Set Cube Position ({x}, {y}, {z})");
51 | }
52 |
53 | [DebugCommand]
54 | public static void EchoEnum(TestEnum test)
55 | {
56 | Debug.Log($"EchoEnum {test}");
57 | }
58 | }
59 |
60 | public enum TestEnum
61 | {
62 | Red,
63 | Blue,
64 | Yellow,
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/Assets/Development/TestCommands.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5071c50aabe2f4a20bc1d0e889e5a028
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 kyubuns
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Packages/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.unity.collab-proxy": "2.4.4",
4 | "com.unity.feature.development": "1.0.2",
5 | "com.unity.timeline": "1.8.7",
6 | "com.unity.ugui": "2.0.0",
7 | "com.unity.visualscripting": "1.9.4",
8 | "com.unity.modules.accessibility": "1.0.0",
9 | "com.unity.modules.ai": "1.0.0",
10 | "com.unity.modules.androidjni": "1.0.0",
11 | "com.unity.modules.animation": "1.0.0",
12 | "com.unity.modules.assetbundle": "1.0.0",
13 | "com.unity.modules.audio": "1.0.0",
14 | "com.unity.modules.cloth": "1.0.0",
15 | "com.unity.modules.director": "1.0.0",
16 | "com.unity.modules.imageconversion": "1.0.0",
17 | "com.unity.modules.imgui": "1.0.0",
18 | "com.unity.modules.jsonserialize": "1.0.0",
19 | "com.unity.modules.particlesystem": "1.0.0",
20 | "com.unity.modules.physics": "1.0.0",
21 | "com.unity.modules.physics2d": "1.0.0",
22 | "com.unity.modules.screencapture": "1.0.0",
23 | "com.unity.modules.terrain": "1.0.0",
24 | "com.unity.modules.terrainphysics": "1.0.0",
25 | "com.unity.modules.tilemap": "1.0.0",
26 | "com.unity.modules.ui": "1.0.0",
27 | "com.unity.modules.uielements": "1.0.0",
28 | "com.unity.modules.umbra": "1.0.0",
29 | "com.unity.modules.unityanalytics": "1.0.0",
30 | "com.unity.modules.unitywebrequest": "1.0.0",
31 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
32 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
33 | "com.unity.modules.unitywebrequesttexture": "1.0.0",
34 | "com.unity.modules.unitywebrequestwww": "1.0.0",
35 | "com.unity.modules.vehicles": "1.0.0",
36 | "com.unity.modules.video": "1.0.0",
37 | "com.unity.modules.vr": "1.0.0",
38 | "com.unity.modules.wind": "1.0.0",
39 | "com.unity.modules.xr": "1.0.0"
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Packages/packages-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.unity.collab-proxy": {
4 | "version": "2.4.4",
5 | "depth": 0,
6 | "source": "registry",
7 | "dependencies": {},
8 | "url": "https://packages.unity.com"
9 | },
10 | "com.unity.editorcoroutines": {
11 | "version": "1.0.0",
12 | "depth": 1,
13 | "source": "registry",
14 | "dependencies": {},
15 | "url": "https://packages.unity.com"
16 | },
17 | "com.unity.ext.nunit": {
18 | "version": "2.0.5",
19 | "depth": 2,
20 | "source": "registry",
21 | "dependencies": {},
22 | "url": "https://packages.unity.com"
23 | },
24 | "com.unity.feature.development": {
25 | "version": "1.0.2",
26 | "depth": 0,
27 | "source": "builtin",
28 | "dependencies": {
29 | "com.unity.ide.visualstudio": "2.0.22",
30 | "com.unity.ide.rider": "3.0.31",
31 | "com.unity.editorcoroutines": "1.0.0",
32 | "com.unity.performance.profile-analyzer": "1.2.2",
33 | "com.unity.test-framework": "1.4.5",
34 | "com.unity.testtools.codecoverage": "1.2.6"
35 | }
36 | },
37 | "com.unity.ide.rider": {
38 | "version": "3.0.31",
39 | "depth": 1,
40 | "source": "registry",
41 | "dependencies": {
42 | "com.unity.ext.nunit": "1.0.6"
43 | },
44 | "url": "https://packages.unity.com"
45 | },
46 | "com.unity.ide.visualstudio": {
47 | "version": "2.0.22",
48 | "depth": 1,
49 | "source": "registry",
50 | "dependencies": {
51 | "com.unity.test-framework": "1.1.9"
52 | },
53 | "url": "https://packages.unity.com"
54 | },
55 | "com.unity.performance.profile-analyzer": {
56 | "version": "1.2.2",
57 | "depth": 1,
58 | "source": "registry",
59 | "dependencies": {},
60 | "url": "https://packages.unity.com"
61 | },
62 | "com.unity.settings-manager": {
63 | "version": "2.0.1",
64 | "depth": 2,
65 | "source": "registry",
66 | "dependencies": {},
67 | "url": "https://packages.unity.com"
68 | },
69 | "com.unity.test-framework": {
70 | "version": "1.4.5",
71 | "depth": 1,
72 | "source": "registry",
73 | "dependencies": {
74 | "com.unity.ext.nunit": "2.0.3",
75 | "com.unity.modules.imgui": "1.0.0",
76 | "com.unity.modules.jsonserialize": "1.0.0"
77 | },
78 | "url": "https://packages.unity.com"
79 | },
80 | "com.unity.testtools.codecoverage": {
81 | "version": "1.2.6",
82 | "depth": 1,
83 | "source": "registry",
84 | "dependencies": {
85 | "com.unity.test-framework": "1.0.16",
86 | "com.unity.settings-manager": "1.0.1"
87 | },
88 | "url": "https://packages.unity.com"
89 | },
90 | "com.unity.timeline": {
91 | "version": "1.8.7",
92 | "depth": 0,
93 | "source": "registry",
94 | "dependencies": {
95 | "com.unity.modules.audio": "1.0.0",
96 | "com.unity.modules.director": "1.0.0",
97 | "com.unity.modules.animation": "1.0.0",
98 | "com.unity.modules.particlesystem": "1.0.0"
99 | },
100 | "url": "https://packages.unity.com"
101 | },
102 | "com.unity.ugui": {
103 | "version": "2.0.0",
104 | "depth": 0,
105 | "source": "builtin",
106 | "dependencies": {
107 | "com.unity.modules.ui": "1.0.0",
108 | "com.unity.modules.imgui": "1.0.0"
109 | }
110 | },
111 | "com.unity.visualscripting": {
112 | "version": "1.9.4",
113 | "depth": 0,
114 | "source": "registry",
115 | "dependencies": {
116 | "com.unity.ugui": "1.0.0",
117 | "com.unity.modules.jsonserialize": "1.0.0"
118 | },
119 | "url": "https://packages.unity.com"
120 | },
121 | "com.unity.modules.accessibility": {
122 | "version": "1.0.0",
123 | "depth": 0,
124 | "source": "builtin",
125 | "dependencies": {}
126 | },
127 | "com.unity.modules.ai": {
128 | "version": "1.0.0",
129 | "depth": 0,
130 | "source": "builtin",
131 | "dependencies": {}
132 | },
133 | "com.unity.modules.androidjni": {
134 | "version": "1.0.0",
135 | "depth": 0,
136 | "source": "builtin",
137 | "dependencies": {}
138 | },
139 | "com.unity.modules.animation": {
140 | "version": "1.0.0",
141 | "depth": 0,
142 | "source": "builtin",
143 | "dependencies": {}
144 | },
145 | "com.unity.modules.assetbundle": {
146 | "version": "1.0.0",
147 | "depth": 0,
148 | "source": "builtin",
149 | "dependencies": {}
150 | },
151 | "com.unity.modules.audio": {
152 | "version": "1.0.0",
153 | "depth": 0,
154 | "source": "builtin",
155 | "dependencies": {}
156 | },
157 | "com.unity.modules.cloth": {
158 | "version": "1.0.0",
159 | "depth": 0,
160 | "source": "builtin",
161 | "dependencies": {
162 | "com.unity.modules.physics": "1.0.0"
163 | }
164 | },
165 | "com.unity.modules.director": {
166 | "version": "1.0.0",
167 | "depth": 0,
168 | "source": "builtin",
169 | "dependencies": {
170 | "com.unity.modules.audio": "1.0.0",
171 | "com.unity.modules.animation": "1.0.0"
172 | }
173 | },
174 | "com.unity.modules.hierarchycore": {
175 | "version": "1.0.0",
176 | "depth": 1,
177 | "source": "builtin",
178 | "dependencies": {}
179 | },
180 | "com.unity.modules.imageconversion": {
181 | "version": "1.0.0",
182 | "depth": 0,
183 | "source": "builtin",
184 | "dependencies": {}
185 | },
186 | "com.unity.modules.imgui": {
187 | "version": "1.0.0",
188 | "depth": 0,
189 | "source": "builtin",
190 | "dependencies": {}
191 | },
192 | "com.unity.modules.jsonserialize": {
193 | "version": "1.0.0",
194 | "depth": 0,
195 | "source": "builtin",
196 | "dependencies": {}
197 | },
198 | "com.unity.modules.particlesystem": {
199 | "version": "1.0.0",
200 | "depth": 0,
201 | "source": "builtin",
202 | "dependencies": {}
203 | },
204 | "com.unity.modules.physics": {
205 | "version": "1.0.0",
206 | "depth": 0,
207 | "source": "builtin",
208 | "dependencies": {}
209 | },
210 | "com.unity.modules.physics2d": {
211 | "version": "1.0.0",
212 | "depth": 0,
213 | "source": "builtin",
214 | "dependencies": {}
215 | },
216 | "com.unity.modules.screencapture": {
217 | "version": "1.0.0",
218 | "depth": 0,
219 | "source": "builtin",
220 | "dependencies": {
221 | "com.unity.modules.imageconversion": "1.0.0"
222 | }
223 | },
224 | "com.unity.modules.subsystems": {
225 | "version": "1.0.0",
226 | "depth": 1,
227 | "source": "builtin",
228 | "dependencies": {
229 | "com.unity.modules.jsonserialize": "1.0.0"
230 | }
231 | },
232 | "com.unity.modules.terrain": {
233 | "version": "1.0.0",
234 | "depth": 0,
235 | "source": "builtin",
236 | "dependencies": {}
237 | },
238 | "com.unity.modules.terrainphysics": {
239 | "version": "1.0.0",
240 | "depth": 0,
241 | "source": "builtin",
242 | "dependencies": {
243 | "com.unity.modules.physics": "1.0.0",
244 | "com.unity.modules.terrain": "1.0.0"
245 | }
246 | },
247 | "com.unity.modules.tilemap": {
248 | "version": "1.0.0",
249 | "depth": 0,
250 | "source": "builtin",
251 | "dependencies": {
252 | "com.unity.modules.physics2d": "1.0.0"
253 | }
254 | },
255 | "com.unity.modules.ui": {
256 | "version": "1.0.0",
257 | "depth": 0,
258 | "source": "builtin",
259 | "dependencies": {}
260 | },
261 | "com.unity.modules.uielements": {
262 | "version": "1.0.0",
263 | "depth": 0,
264 | "source": "builtin",
265 | "dependencies": {
266 | "com.unity.modules.ui": "1.0.0",
267 | "com.unity.modules.imgui": "1.0.0",
268 | "com.unity.modules.jsonserialize": "1.0.0",
269 | "com.unity.modules.hierarchycore": "1.0.0"
270 | }
271 | },
272 | "com.unity.modules.umbra": {
273 | "version": "1.0.0",
274 | "depth": 0,
275 | "source": "builtin",
276 | "dependencies": {}
277 | },
278 | "com.unity.modules.unityanalytics": {
279 | "version": "1.0.0",
280 | "depth": 0,
281 | "source": "builtin",
282 | "dependencies": {
283 | "com.unity.modules.unitywebrequest": "1.0.0",
284 | "com.unity.modules.jsonserialize": "1.0.0"
285 | }
286 | },
287 | "com.unity.modules.unitywebrequest": {
288 | "version": "1.0.0",
289 | "depth": 0,
290 | "source": "builtin",
291 | "dependencies": {}
292 | },
293 | "com.unity.modules.unitywebrequestassetbundle": {
294 | "version": "1.0.0",
295 | "depth": 0,
296 | "source": "builtin",
297 | "dependencies": {
298 | "com.unity.modules.assetbundle": "1.0.0",
299 | "com.unity.modules.unitywebrequest": "1.0.0"
300 | }
301 | },
302 | "com.unity.modules.unitywebrequestaudio": {
303 | "version": "1.0.0",
304 | "depth": 0,
305 | "source": "builtin",
306 | "dependencies": {
307 | "com.unity.modules.unitywebrequest": "1.0.0",
308 | "com.unity.modules.audio": "1.0.0"
309 | }
310 | },
311 | "com.unity.modules.unitywebrequesttexture": {
312 | "version": "1.0.0",
313 | "depth": 0,
314 | "source": "builtin",
315 | "dependencies": {
316 | "com.unity.modules.unitywebrequest": "1.0.0",
317 | "com.unity.modules.imageconversion": "1.0.0"
318 | }
319 | },
320 | "com.unity.modules.unitywebrequestwww": {
321 | "version": "1.0.0",
322 | "depth": 0,
323 | "source": "builtin",
324 | "dependencies": {
325 | "com.unity.modules.unitywebrequest": "1.0.0",
326 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
327 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
328 | "com.unity.modules.audio": "1.0.0",
329 | "com.unity.modules.assetbundle": "1.0.0",
330 | "com.unity.modules.imageconversion": "1.0.0"
331 | }
332 | },
333 | "com.unity.modules.vehicles": {
334 | "version": "1.0.0",
335 | "depth": 0,
336 | "source": "builtin",
337 | "dependencies": {
338 | "com.unity.modules.physics": "1.0.0"
339 | }
340 | },
341 | "com.unity.modules.video": {
342 | "version": "1.0.0",
343 | "depth": 0,
344 | "source": "builtin",
345 | "dependencies": {
346 | "com.unity.modules.audio": "1.0.0",
347 | "com.unity.modules.ui": "1.0.0",
348 | "com.unity.modules.unitywebrequest": "1.0.0"
349 | }
350 | },
351 | "com.unity.modules.vr": {
352 | "version": "1.0.0",
353 | "depth": 0,
354 | "source": "builtin",
355 | "dependencies": {
356 | "com.unity.modules.jsonserialize": "1.0.0",
357 | "com.unity.modules.physics": "1.0.0",
358 | "com.unity.modules.xr": "1.0.0"
359 | }
360 | },
361 | "com.unity.modules.wind": {
362 | "version": "1.0.0",
363 | "depth": 0,
364 | "source": "builtin",
365 | "dependencies": {}
366 | },
367 | "com.unity.modules.xr": {
368 | "version": "1.0.0",
369 | "depth": 0,
370 | "source": "builtin",
371 | "dependencies": {
372 | "com.unity.modules.physics": "1.0.0",
373 | "com.unity.modules.jsonserialize": "1.0.0",
374 | "com.unity.modules.subsystems": "1.0.0"
375 | }
376 | }
377 | }
378 | }
379 |
--------------------------------------------------------------------------------
/ProjectSettings/AudioManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!11 &1
4 | AudioManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Volume: 1
8 | Rolloff Scale: 1
9 | Doppler Factor: 1
10 | Default Speaker Mode: 2
11 | m_SampleRate: 0
12 | m_DSPBufferSize: 1024
13 | m_VirtualVoiceCount: 512
14 | m_RealVoiceCount: 32
15 | m_SpatializerPlugin:
16 | m_AmbisonicDecoderPlugin:
17 | m_DisableAudio: 0
18 | m_VirtualizeEffects: 1
19 | m_RequestedDSPBufferSize: 1024
20 |
--------------------------------------------------------------------------------
/ProjectSettings/ClusterInputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!236 &1
4 | ClusterInputManager:
5 | m_ObjectHideFlags: 0
6 | m_Inputs: []
7 |
--------------------------------------------------------------------------------
/ProjectSettings/DynamicsManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!55 &1
4 | PhysicsManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 11
7 | m_Gravity: {x: 0, y: -9.81, z: 0}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_BounceThreshold: 2
10 | m_SleepThreshold: 0.005
11 | m_DefaultContactOffset: 0.01
12 | m_DefaultSolverIterations: 6
13 | m_DefaultSolverVelocityIterations: 1
14 | m_QueriesHitBackfaces: 0
15 | m_QueriesHitTriggers: 1
16 | m_EnableAdaptiveForce: 0
17 | m_ClothInterCollisionDistance: 0
18 | m_ClothInterCollisionStiffness: 0
19 | m_ContactsGeneration: 1
20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
21 | m_AutoSimulation: 1
22 | m_AutoSyncTransforms: 0
23 | m_ReuseCollisionCallbacks: 1
24 | m_ClothInterCollisionSettingsToggle: 0
25 | m_ContactPairsMode: 0
26 | m_BroadphaseType: 0
27 | m_WorldBounds:
28 | m_Center: {x: 0, y: 0, z: 0}
29 | m_Extent: {x: 250, y: 250, z: 250}
30 | m_WorldSubdivisions: 8
31 | m_FrictionType: 0
32 | m_EnableEnhancedDeterminism: 0
33 | m_EnableUnifiedHeightmaps: 1
34 | m_DefaultMaxAngluarSpeed: 7
35 |
--------------------------------------------------------------------------------
/ProjectSettings/EditorBuildSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1045 &1
4 | EditorBuildSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Scenes:
8 | - enabled: 1
9 | path: Assets/Development/SampleScene.unity
10 | guid: 9fc0d4010bbf28b4594072e72b8655ab
11 | m_configObjects: {}
12 |
--------------------------------------------------------------------------------
/ProjectSettings/EditorSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!159 &1
4 | EditorSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 12
7 | m_SerializationMode: 2
8 | m_LineEndingsForNewScripts: 0
9 | m_DefaultBehaviorMode: 0
10 | m_PrefabRegularEnvironment: {fileID: 0}
11 | m_PrefabUIEnvironment: {fileID: 0}
12 | m_SpritePackerMode: 0
13 | m_SpritePackerCacheSize: 10
14 | m_SpritePackerPaddingPower: 1
15 | m_Bc7TextureCompressor: 0
16 | m_EtcTextureCompressorBehavior: 1
17 | m_EtcTextureFastCompressor: 1
18 | m_EtcTextureNormalCompressor: 2
19 | m_EtcTextureBestCompressor: 4
20 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref
21 | m_ProjectGenerationRootNamespace:
22 | m_EnableTextureStreamingInEditMode: 1
23 | m_EnableTextureStreamingInPlayMode: 1
24 | m_EnableEditorAsyncCPUTextureLoading: 0
25 | m_AsyncShaderCompilation: 1
26 | m_PrefabModeAllowAutoSave: 1
27 | m_EnterPlayModeOptionsEnabled: 1
28 | m_EnterPlayModeOptions: 3
29 | m_GameObjectNamingDigits: 1
30 | m_GameObjectNamingScheme: 0
31 | m_AssetNamingUsesSpace: 1
32 | m_InspectorUseIMGUIDefaultInspector: 0
33 | m_UseLegacyProbeSampleCount: 0
34 | m_SerializeInlineMappingsOnOneLine: 1
35 | m_DisableCookiesInLightmapper: 0
36 | m_AssetPipelineMode: 1
37 | m_RefreshImportMode: 0
38 | m_CacheServerMode: 0
39 | m_CacheServerEndpoint:
40 | m_CacheServerNamespacePrefix: default
41 | m_CacheServerEnableDownload: 1
42 | m_CacheServerEnableUpload: 1
43 | m_CacheServerEnableAuth: 0
44 | m_CacheServerEnableTls: 0
45 | m_CacheServerValidationMode: 2
46 | m_CacheServerDownloadBatchSize: 128
47 | m_EnableEnlightenBakedGI: 0
48 |
--------------------------------------------------------------------------------
/ProjectSettings/GraphicsSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!30 &1
4 | GraphicsSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 13
7 | m_Deferred:
8 | m_Mode: 1
9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
10 | m_DeferredReflections:
11 | m_Mode: 1
12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
13 | m_ScreenSpaceShadows:
14 | m_Mode: 1
15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
16 | m_LegacyDeferred:
17 | m_Mode: 1
18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
19 | m_DepthNormals:
20 | m_Mode: 1
21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
22 | m_MotionVectors:
23 | m_Mode: 1
24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
25 | m_LightHalo:
26 | m_Mode: 1
27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
28 | m_LensFlare:
29 | m_Mode: 1
30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
31 | m_AlwaysIncludedShaders:
32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
38 | m_PreloadedShaders: []
39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
40 | type: 0}
41 | m_CustomRenderPipeline: {fileID: 0}
42 | m_TransparencySortMode: 0
43 | m_TransparencySortAxis: {x: 0, y: 0, z: 1}
44 | m_DefaultRenderingPath: 1
45 | m_DefaultMobileRenderingPath: 1
46 | m_TierSettings: []
47 | m_LightmapStripping: 0
48 | m_FogStripping: 0
49 | m_InstancingStripping: 0
50 | m_LightmapKeepPlain: 1
51 | m_LightmapKeepDirCombined: 1
52 | m_LightmapKeepDynamicPlain: 1
53 | m_LightmapKeepDynamicDirCombined: 1
54 | m_LightmapKeepShadowMask: 1
55 | m_LightmapKeepSubtractive: 1
56 | m_FogKeepLinear: 1
57 | m_FogKeepExp: 1
58 | m_FogKeepExp2: 1
59 | m_AlbedoSwatchInfos: []
60 | m_LightsUseLinearIntensity: 0
61 | m_LightsUseColorTemperature: 0
62 | m_LogWhenShaderIsCompiled: 0
63 | m_AllowEnlightenSupportForUpgradedProject: 0
64 |
--------------------------------------------------------------------------------
/ProjectSettings/InputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!13 &1
4 | InputManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Axes:
8 | - serializedVersion: 3
9 | m_Name: Horizontal
10 | descriptiveName:
11 | descriptiveNegativeName:
12 | negativeButton: left
13 | positiveButton: right
14 | altNegativeButton: a
15 | altPositiveButton: d
16 | gravity: 3
17 | dead: 0.001
18 | sensitivity: 3
19 | snap: 1
20 | invert: 0
21 | type: 0
22 | axis: 0
23 | joyNum: 0
24 | - serializedVersion: 3
25 | m_Name: Vertical
26 | descriptiveName:
27 | descriptiveNegativeName:
28 | negativeButton: down
29 | positiveButton: up
30 | altNegativeButton: s
31 | altPositiveButton: w
32 | gravity: 3
33 | dead: 0.001
34 | sensitivity: 3
35 | snap: 1
36 | invert: 0
37 | type: 0
38 | axis: 0
39 | joyNum: 0
40 | - serializedVersion: 3
41 | m_Name: Fire1
42 | descriptiveName:
43 | descriptiveNegativeName:
44 | negativeButton:
45 | positiveButton: left ctrl
46 | altNegativeButton:
47 | altPositiveButton: mouse 0
48 | gravity: 1000
49 | dead: 0.001
50 | sensitivity: 1000
51 | snap: 0
52 | invert: 0
53 | type: 0
54 | axis: 0
55 | joyNum: 0
56 | - serializedVersion: 3
57 | m_Name: Fire2
58 | descriptiveName:
59 | descriptiveNegativeName:
60 | negativeButton:
61 | positiveButton: left alt
62 | altNegativeButton:
63 | altPositiveButton: mouse 1
64 | gravity: 1000
65 | dead: 0.001
66 | sensitivity: 1000
67 | snap: 0
68 | invert: 0
69 | type: 0
70 | axis: 0
71 | joyNum: 0
72 | - serializedVersion: 3
73 | m_Name: Fire3
74 | descriptiveName:
75 | descriptiveNegativeName:
76 | negativeButton:
77 | positiveButton: left shift
78 | altNegativeButton:
79 | altPositiveButton: mouse 2
80 | gravity: 1000
81 | dead: 0.001
82 | sensitivity: 1000
83 | snap: 0
84 | invert: 0
85 | type: 0
86 | axis: 0
87 | joyNum: 0
88 | - serializedVersion: 3
89 | m_Name: Jump
90 | descriptiveName:
91 | descriptiveNegativeName:
92 | negativeButton:
93 | positiveButton: space
94 | altNegativeButton:
95 | altPositiveButton:
96 | gravity: 1000
97 | dead: 0.001
98 | sensitivity: 1000
99 | snap: 0
100 | invert: 0
101 | type: 0
102 | axis: 0
103 | joyNum: 0
104 | - serializedVersion: 3
105 | m_Name: Mouse X
106 | descriptiveName:
107 | descriptiveNegativeName:
108 | negativeButton:
109 | positiveButton:
110 | altNegativeButton:
111 | altPositiveButton:
112 | gravity: 0
113 | dead: 0
114 | sensitivity: 0.1
115 | snap: 0
116 | invert: 0
117 | type: 1
118 | axis: 0
119 | joyNum: 0
120 | - serializedVersion: 3
121 | m_Name: Mouse Y
122 | descriptiveName:
123 | descriptiveNegativeName:
124 | negativeButton:
125 | positiveButton:
126 | altNegativeButton:
127 | altPositiveButton:
128 | gravity: 0
129 | dead: 0
130 | sensitivity: 0.1
131 | snap: 0
132 | invert: 0
133 | type: 1
134 | axis: 1
135 | joyNum: 0
136 | - serializedVersion: 3
137 | m_Name: Mouse ScrollWheel
138 | descriptiveName:
139 | descriptiveNegativeName:
140 | negativeButton:
141 | positiveButton:
142 | altNegativeButton:
143 | altPositiveButton:
144 | gravity: 0
145 | dead: 0
146 | sensitivity: 0.1
147 | snap: 0
148 | invert: 0
149 | type: 1
150 | axis: 2
151 | joyNum: 0
152 | - serializedVersion: 3
153 | m_Name: Horizontal
154 | descriptiveName:
155 | descriptiveNegativeName:
156 | negativeButton:
157 | positiveButton:
158 | altNegativeButton:
159 | altPositiveButton:
160 | gravity: 0
161 | dead: 0.19
162 | sensitivity: 1
163 | snap: 0
164 | invert: 0
165 | type: 2
166 | axis: 0
167 | joyNum: 0
168 | - serializedVersion: 3
169 | m_Name: Vertical
170 | descriptiveName:
171 | descriptiveNegativeName:
172 | negativeButton:
173 | positiveButton:
174 | altNegativeButton:
175 | altPositiveButton:
176 | gravity: 0
177 | dead: 0.19
178 | sensitivity: 1
179 | snap: 0
180 | invert: 1
181 | type: 2
182 | axis: 1
183 | joyNum: 0
184 | - serializedVersion: 3
185 | m_Name: Fire1
186 | descriptiveName:
187 | descriptiveNegativeName:
188 | negativeButton:
189 | positiveButton: joystick button 0
190 | altNegativeButton:
191 | altPositiveButton:
192 | gravity: 1000
193 | dead: 0.001
194 | sensitivity: 1000
195 | snap: 0
196 | invert: 0
197 | type: 0
198 | axis: 0
199 | joyNum: 0
200 | - serializedVersion: 3
201 | m_Name: Fire2
202 | descriptiveName:
203 | descriptiveNegativeName:
204 | negativeButton:
205 | positiveButton: joystick button 1
206 | altNegativeButton:
207 | altPositiveButton:
208 | gravity: 1000
209 | dead: 0.001
210 | sensitivity: 1000
211 | snap: 0
212 | invert: 0
213 | type: 0
214 | axis: 0
215 | joyNum: 0
216 | - serializedVersion: 3
217 | m_Name: Fire3
218 | descriptiveName:
219 | descriptiveNegativeName:
220 | negativeButton:
221 | positiveButton: joystick button 2
222 | altNegativeButton:
223 | altPositiveButton:
224 | gravity: 1000
225 | dead: 0.001
226 | sensitivity: 1000
227 | snap: 0
228 | invert: 0
229 | type: 0
230 | axis: 0
231 | joyNum: 0
232 | - serializedVersion: 3
233 | m_Name: Jump
234 | descriptiveName:
235 | descriptiveNegativeName:
236 | negativeButton:
237 | positiveButton: joystick button 3
238 | altNegativeButton:
239 | altPositiveButton:
240 | gravity: 1000
241 | dead: 0.001
242 | sensitivity: 1000
243 | snap: 0
244 | invert: 0
245 | type: 0
246 | axis: 0
247 | joyNum: 0
248 | - serializedVersion: 3
249 | m_Name: Submit
250 | descriptiveName:
251 | descriptiveNegativeName:
252 | negativeButton:
253 | positiveButton: return
254 | altNegativeButton:
255 | altPositiveButton: joystick button 0
256 | gravity: 1000
257 | dead: 0.001
258 | sensitivity: 1000
259 | snap: 0
260 | invert: 0
261 | type: 0
262 | axis: 0
263 | joyNum: 0
264 | - serializedVersion: 3
265 | m_Name: Submit
266 | descriptiveName:
267 | descriptiveNegativeName:
268 | negativeButton:
269 | positiveButton: enter
270 | altNegativeButton:
271 | altPositiveButton: space
272 | gravity: 1000
273 | dead: 0.001
274 | sensitivity: 1000
275 | snap: 0
276 | invert: 0
277 | type: 0
278 | axis: 0
279 | joyNum: 0
280 | - serializedVersion: 3
281 | m_Name: Cancel
282 | descriptiveName:
283 | descriptiveNegativeName:
284 | negativeButton:
285 | positiveButton: escape
286 | altNegativeButton:
287 | altPositiveButton: joystick button 1
288 | gravity: 1000
289 | dead: 0.001
290 | sensitivity: 1000
291 | snap: 0
292 | invert: 0
293 | type: 0
294 | axis: 0
295 | joyNum: 0
296 |
--------------------------------------------------------------------------------
/ProjectSettings/MemorySettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!387306366 &1
4 | MemorySettings:
5 | m_ObjectHideFlags: 0
6 | m_EditorMemorySettings:
7 | m_MainAllocatorBlockSize: -1
8 | m_ThreadAllocatorBlockSize: -1
9 | m_MainGfxBlockSize: -1
10 | m_ThreadGfxBlockSize: -1
11 | m_CacheBlockSize: -1
12 | m_TypetreeBlockSize: -1
13 | m_ProfilerBlockSize: -1
14 | m_ProfilerEditorBlockSize: -1
15 | m_BucketAllocatorGranularity: -1
16 | m_BucketAllocatorBucketsCount: -1
17 | m_BucketAllocatorBlockSize: -1
18 | m_BucketAllocatorBlockCount: -1
19 | m_ProfilerBucketAllocatorGranularity: -1
20 | m_ProfilerBucketAllocatorBucketsCount: -1
21 | m_ProfilerBucketAllocatorBlockSize: -1
22 | m_ProfilerBucketAllocatorBlockCount: -1
23 | m_TempAllocatorSizeMain: -1
24 | m_JobTempAllocatorBlockSize: -1
25 | m_BackgroundJobTempAllocatorBlockSize: -1
26 | m_JobTempAllocatorReducedBlockSize: -1
27 | m_TempAllocatorSizeGIBakingWorker: -1
28 | m_TempAllocatorSizeNavMeshWorker: -1
29 | m_TempAllocatorSizeAudioWorker: -1
30 | m_TempAllocatorSizeCloudWorker: -1
31 | m_TempAllocatorSizeGfx: -1
32 | m_TempAllocatorSizeJobWorker: -1
33 | m_TempAllocatorSizeBackgroundWorker: -1
34 | m_TempAllocatorSizePreloadManager: -1
35 | m_PlatformMemorySettings: {}
36 |
--------------------------------------------------------------------------------
/ProjectSettings/MultiplayerManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!655991488 &1
4 | MultiplayerManager:
5 | m_ObjectHideFlags: 0
6 | m_EnableMultiplayerRoles: 0
7 | m_StrippingTypes: {}
8 |
--------------------------------------------------------------------------------
/ProjectSettings/NavMeshAreas.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!126 &1
4 | NavMeshProjectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | areas:
8 | - name: Walkable
9 | cost: 1
10 | - name: Not Walkable
11 | cost: 1
12 | - name: Jump
13 | cost: 2
14 | - name:
15 | cost: 1
16 | - name:
17 | cost: 1
18 | - name:
19 | cost: 1
20 | - name:
21 | cost: 1
22 | - name:
23 | cost: 1
24 | - name:
25 | cost: 1
26 | - name:
27 | cost: 1
28 | - name:
29 | cost: 1
30 | - name:
31 | cost: 1
32 | - name:
33 | cost: 1
34 | - name:
35 | cost: 1
36 | - name:
37 | cost: 1
38 | - name:
39 | cost: 1
40 | - name:
41 | cost: 1
42 | - name:
43 | cost: 1
44 | - name:
45 | cost: 1
46 | - name:
47 | cost: 1
48 | - name:
49 | cost: 1
50 | - name:
51 | cost: 1
52 | - name:
53 | cost: 1
54 | - name:
55 | cost: 1
56 | - name:
57 | cost: 1
58 | - name:
59 | cost: 1
60 | - name:
61 | cost: 1
62 | - name:
63 | cost: 1
64 | - name:
65 | cost: 1
66 | - name:
67 | cost: 1
68 | - name:
69 | cost: 1
70 | - name:
71 | cost: 1
72 | m_LastAgentTypeID: -887442657
73 | m_Settings:
74 | - serializedVersion: 2
75 | agentTypeID: 0
76 | agentRadius: 0.5
77 | agentHeight: 2
78 | agentSlope: 45
79 | agentClimb: 0.75
80 | ledgeDropHeight: 0
81 | maxJumpAcrossDistance: 0
82 | minRegionArea: 2
83 | manualCellSize: 0
84 | cellSize: 0.16666667
85 | manualTileSize: 0
86 | tileSize: 256
87 | accuratePlacement: 0
88 | debug:
89 | m_Flags: 0
90 | m_SettingNames:
91 | - Humanoid
92 |
--------------------------------------------------------------------------------
/ProjectSettings/PackageManagerSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &1
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 61
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
13 | m_Name:
14 | m_EditorClassIdentifier:
15 | m_EnablePreReleasePackages: 0
16 | m_EnablePackageDependencies: 0
17 | m_AdvancedSettingsExpanded: 1
18 | m_ScopedRegistriesSettingsExpanded: 1
19 | m_SeeAllPackageVersions: 0
20 | oneTimeWarningShown: 0
21 | m_Registries:
22 | - m_Id: main
23 | m_Name:
24 | m_Url: https://packages.unity.com
25 | m_Scopes: []
26 | m_IsDefault: 1
27 | m_Capabilities: 7
28 | m_UserSelectedRegistryName:
29 | m_UserAddingNewScopedRegistry: 0
30 | m_RegistryInfoDraft:
31 | m_Modified: 0
32 | m_ErrorMessage:
33 | m_UserModificationsInstanceId: -830
34 | m_OriginalInstanceId: -832
35 | m_LoadAssets: 0
36 |
--------------------------------------------------------------------------------
/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "m_Dictionary": {
3 | "m_DictionaryValues": []
4 | }
5 | }
--------------------------------------------------------------------------------
/ProjectSettings/Physics2DSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!19 &1
4 | Physics2DSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 4
7 | m_Gravity: {x: 0, y: -9.81}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_VelocityIterations: 8
10 | m_PositionIterations: 3
11 | m_VelocityThreshold: 1
12 | m_MaxLinearCorrection: 0.2
13 | m_MaxAngularCorrection: 8
14 | m_MaxTranslationSpeed: 100
15 | m_MaxRotationSpeed: 360
16 | m_BaumgarteScale: 0.2
17 | m_BaumgarteTimeOfImpactScale: 0.75
18 | m_TimeToSleep: 0.5
19 | m_LinearSleepTolerance: 0.01
20 | m_AngularSleepTolerance: 2
21 | m_DefaultContactOffset: 0.01
22 | m_JobOptions:
23 | serializedVersion: 2
24 | useMultithreading: 0
25 | useConsistencySorting: 0
26 | m_InterpolationPosesPerJob: 100
27 | m_NewContactsPerJob: 30
28 | m_CollideContactsPerJob: 100
29 | m_ClearFlagsPerJob: 200
30 | m_ClearBodyForcesPerJob: 200
31 | m_SyncDiscreteFixturesPerJob: 50
32 | m_SyncContinuousFixturesPerJob: 50
33 | m_FindNearestContactsPerJob: 100
34 | m_UpdateTriggerContactsPerJob: 100
35 | m_IslandSolverCostThreshold: 100
36 | m_IslandSolverBodyCostScale: 1
37 | m_IslandSolverContactCostScale: 10
38 | m_IslandSolverJointCostScale: 10
39 | m_IslandSolverBodiesPerJob: 50
40 | m_IslandSolverContactsPerJob: 50
41 | m_AutoSimulation: 1
42 | m_QueriesHitTriggers: 1
43 | m_QueriesStartInColliders: 1
44 | m_CallbacksOnDisable: 1
45 | m_ReuseCollisionCallbacks: 1
46 | m_AutoSyncTransforms: 0
47 | m_AlwaysShowColliders: 0
48 | m_ShowColliderSleep: 1
49 | m_ShowColliderContacts: 0
50 | m_ShowColliderAABB: 0
51 | m_ContactArrowScale: 0.2
52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
57 |
--------------------------------------------------------------------------------
/ProjectSettings/PresetManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1386491679 &1
4 | PresetManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_DefaultPresets: {}
8 |
--------------------------------------------------------------------------------
/ProjectSettings/ProjectSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!129 &1
4 | PlayerSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 26
7 | productGUID: 6e225020f94804f3f93b167c4d074928
8 | AndroidProfiler: 0
9 | AndroidFilterTouchesWhenObscured: 0
10 | AndroidEnableSustainedPerformanceMode: 0
11 | defaultScreenOrientation: 4
12 | targetDevice: 2
13 | useOnDemandResources: 0
14 | accelerometerFrequency: 60
15 | companyName: DefaultCompany
16 | productName: DebugCommandExecutor
17 | defaultCursor: {fileID: 0}
18 | cursorHotspot: {x: 0, y: 0}
19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
20 | m_ShowUnitySplashScreen: 1
21 | m_ShowUnitySplashLogo: 1
22 | m_SplashScreenOverlayOpacity: 1
23 | m_SplashScreenAnimation: 1
24 | m_SplashScreenLogoStyle: 1
25 | m_SplashScreenDrawMode: 0
26 | m_SplashScreenBackgroundAnimationZoom: 1
27 | m_SplashScreenLogoAnimationZoom: 1
28 | m_SplashScreenBackgroundLandscapeAspect: 1
29 | m_SplashScreenBackgroundPortraitAspect: 1
30 | m_SplashScreenBackgroundLandscapeUvs:
31 | serializedVersion: 2
32 | x: 0
33 | y: 0
34 | width: 1
35 | height: 1
36 | m_SplashScreenBackgroundPortraitUvs:
37 | serializedVersion: 2
38 | x: 0
39 | y: 0
40 | width: 1
41 | height: 1
42 | m_SplashScreenLogos: []
43 | m_VirtualRealitySplashScreen: {fileID: 0}
44 | m_HolographicTrackingLossScreen: {fileID: 0}
45 | defaultScreenWidth: 1280
46 | defaultScreenHeight: 800
47 | defaultScreenWidthWeb: 960
48 | defaultScreenHeightWeb: 600
49 | m_StereoRenderingPath: 0
50 | m_ActiveColorSpace: 0
51 | unsupportedMSAAFallback: 0
52 | m_SpriteBatchVertexThreshold: 300
53 | m_MTRendering: 1
54 | mipStripping: 0
55 | numberOfMipsStripped: 0
56 | numberOfMipsStrippedPerMipmapLimitGroup: {}
57 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000
58 | iosShowActivityIndicatorOnLoading: -1
59 | androidShowActivityIndicatorOnLoading: -1
60 | iosUseCustomAppBackgroundBehavior: 0
61 | allowedAutorotateToPortrait: 1
62 | allowedAutorotateToPortraitUpsideDown: 1
63 | allowedAutorotateToLandscapeRight: 1
64 | allowedAutorotateToLandscapeLeft: 1
65 | useOSAutorotation: 1
66 | use32BitDisplayBuffer: 1
67 | preserveFramebufferAlpha: 0
68 | disableDepthAndStencilBuffers: 0
69 | androidStartInFullscreen: 1
70 | androidRenderOutsideSafeArea: 1
71 | androidUseSwappy: 1
72 | androidBlitType: 0
73 | androidResizableWindow: 0
74 | androidDefaultWindowWidth: 1920
75 | androidDefaultWindowHeight: 1080
76 | androidMinimumWindowWidth: 400
77 | androidMinimumWindowHeight: 300
78 | androidFullscreenMode: 1
79 | androidAutoRotationBehavior: 1
80 | defaultIsNativeResolution: 1
81 | macRetinaSupport: 1
82 | runInBackground: 1
83 | captureSingleScreen: 0
84 | muteOtherAudioSources: 0
85 | Prepare IOS For Recording: 0
86 | Force IOS Speakers When Recording: 0
87 | deferSystemGesturesMode: 0
88 | hideHomeButton: 0
89 | submitAnalytics: 1
90 | usePlayerLog: 1
91 | dedicatedServerOptimizations: 0
92 | bakeCollisionMeshes: 0
93 | forceSingleInstance: 0
94 | useFlipModelSwapchain: 1
95 | resizableWindow: 0
96 | useMacAppStoreValidation: 0
97 | macAppStoreCategory: public.app-category.games
98 | gpuSkinning: 1
99 | xboxPIXTextureCapture: 0
100 | xboxEnableAvatar: 0
101 | xboxEnableKinect: 0
102 | xboxEnableKinectAutoTracking: 0
103 | xboxEnableFitness: 0
104 | visibleInBackground: 1
105 | allowFullscreenSwitch: 1
106 | fullscreenMode: 3
107 | xboxSpeechDB: 0
108 | xboxEnableHeadOrientation: 0
109 | xboxEnableGuest: 0
110 | xboxEnablePIXSampling: 0
111 | metalFramebufferOnly: 0
112 | xboxOneResolution: 0
113 | xboxOneSResolution: 0
114 | xboxOneXResolution: 3
115 | xboxOneMonoLoggingLevel: 0
116 | xboxOneLoggingLevel: 1
117 | xboxOneDisableEsram: 0
118 | xboxOneEnableTypeOptimization: 0
119 | xboxOnePresentImmediateThreshold: 0
120 | switchQueueCommandMemory: 0
121 | switchQueueControlMemory: 16384
122 | switchQueueComputeMemory: 262144
123 | switchNVNShaderPoolsGranularity: 33554432
124 | switchNVNDefaultPoolsGranularity: 16777216
125 | switchNVNOtherPoolsGranularity: 16777216
126 | switchGpuScratchPoolGranularity: 2097152
127 | switchAllowGpuScratchShrinking: 0
128 | switchNVNMaxPublicTextureIDCount: 0
129 | switchNVNMaxPublicSamplerIDCount: 0
130 | switchNVNGraphicsFirmwareMemory: 32
131 | switchMaxWorkerMultiple: 8
132 | stadiaPresentMode: 0
133 | stadiaTargetFramerate: 0
134 | vulkanNumSwapchainBuffers: 3
135 | vulkanEnableSetSRGBWrite: 0
136 | vulkanEnablePreTransform: 1
137 | vulkanEnableLateAcquireNextImage: 0
138 | vulkanEnableCommandBufferRecycling: 1
139 | loadStoreDebugModeEnabled: 0
140 | visionOSBundleVersion: 1.0
141 | tvOSBundleVersion: 1.0
142 | bundleVersion: 0.1
143 | preloadedAssets: []
144 | metroInputSource: 0
145 | wsaTransparentSwapchain: 0
146 | m_HolographicPauseOnTrackingLoss: 1
147 | xboxOneDisableKinectGpuReservation: 1
148 | xboxOneEnable7thCore: 1
149 | vrSettings:
150 | enable360StereoCapture: 0
151 | isWsaHolographicRemotingEnabled: 0
152 | enableFrameTimingStats: 0
153 | enableOpenGLProfilerGPURecorders: 1
154 | allowHDRDisplaySupport: 0
155 | useHDRDisplay: 0
156 | hdrBitDepth: 0
157 | m_ColorGamuts: 00000000
158 | targetPixelDensity: 30
159 | resolutionScalingMode: 0
160 | resetResolutionOnWindowResize: 0
161 | androidSupportedAspectRatio: 1
162 | androidMaxAspectRatio: 2.1
163 | applicationIdentifier: {}
164 | buildNumber:
165 | Standalone: 0
166 | VisionOS: 0
167 | iPhone: 0
168 | tvOS: 0
169 | overrideDefaultApplicationIdentifier: 0
170 | AndroidBundleVersionCode: 1
171 | AndroidMinSdkVersion: 22
172 | AndroidTargetSdkVersion: 0
173 | AndroidPreferredInstallLocation: 1
174 | aotOptions:
175 | stripEngineCode: 1
176 | iPhoneStrippingLevel: 0
177 | iPhoneScriptCallOptimization: 0
178 | ForceInternetPermission: 0
179 | ForceSDCardPermission: 0
180 | CreateWallpaper: 0
181 | APKExpansionFiles: 0
182 | keepLoadedShadersAlive: 0
183 | StripUnusedMeshComponents: 1
184 | strictShaderVariantMatching: 0
185 | VertexChannelCompressionMask: 4054
186 | iPhoneSdkVersion: 988
187 | iOSTargetOSVersionString: 12.0
188 | tvOSSdkVersion: 0
189 | tvOSRequireExtendedGameController: 0
190 | tvOSTargetOSVersionString: 12.0
191 | VisionOSSdkVersion: 0
192 | VisionOSTargetOSVersionString: 1.0
193 | uIPrerenderedIcon: 0
194 | uIRequiresPersistentWiFi: 0
195 | uIRequiresFullScreen: 1
196 | uIStatusBarHidden: 1
197 | uIExitOnSuspend: 0
198 | uIStatusBarStyle: 0
199 | appleTVSplashScreen: {fileID: 0}
200 | appleTVSplashScreen2x: {fileID: 0}
201 | tvOSSmallIconLayers: []
202 | tvOSSmallIconLayers2x: []
203 | tvOSLargeIconLayers: []
204 | tvOSLargeIconLayers2x: []
205 | tvOSTopShelfImageLayers: []
206 | tvOSTopShelfImageLayers2x: []
207 | tvOSTopShelfImageWideLayers: []
208 | tvOSTopShelfImageWideLayers2x: []
209 | iOSLaunchScreenType: 0
210 | iOSLaunchScreenPortrait: {fileID: 0}
211 | iOSLaunchScreenLandscape: {fileID: 0}
212 | iOSLaunchScreenBackgroundColor:
213 | serializedVersion: 2
214 | rgba: 0
215 | iOSLaunchScreenFillPct: 100
216 | iOSLaunchScreenSize: 100
217 | iOSLaunchScreenCustomXibPath:
218 | iOSLaunchScreeniPadType: 0
219 | iOSLaunchScreeniPadImage: {fileID: 0}
220 | iOSLaunchScreeniPadBackgroundColor:
221 | serializedVersion: 2
222 | rgba: 0
223 | iOSLaunchScreeniPadFillPct: 100
224 | iOSLaunchScreeniPadSize: 100
225 | iOSLaunchScreeniPadCustomXibPath:
226 | iOSLaunchScreenCustomStoryboardPath:
227 | iOSLaunchScreeniPadCustomStoryboardPath:
228 | iOSDeviceRequirements: []
229 | iOSURLSchemes: []
230 | macOSURLSchemes: []
231 | iOSBackgroundModes: 0
232 | iOSMetalForceHardShadows: 0
233 | metalEditorSupport: 1
234 | metalAPIValidation: 1
235 | iOSRenderExtraFrameOnPause: 0
236 | iosCopyPluginsCodeInsteadOfSymlink: 0
237 | appleDeveloperTeamID:
238 | iOSManualSigningProvisioningProfileID:
239 | tvOSManualSigningProvisioningProfileID:
240 | VisionOSManualSigningProvisioningProfileID:
241 | iOSManualSigningProvisioningProfileType: 0
242 | tvOSManualSigningProvisioningProfileType: 0
243 | VisionOSManualSigningProvisioningProfileType: 0
244 | appleEnableAutomaticSigning: 0
245 | iOSRequireARKit: 0
246 | iOSAutomaticallyDetectAndAddCapabilities: 1
247 | appleEnableProMotion: 0
248 | shaderPrecisionModel: 0
249 | clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea
250 | templatePackageId: com.unity.template.3d@8.1.1
251 | templateDefaultScene: Assets/Scenes/SampleScene.unity
252 | useCustomMainManifest: 0
253 | useCustomLauncherManifest: 0
254 | useCustomMainGradleTemplate: 0
255 | useCustomLauncherGradleManifest: 0
256 | useCustomBaseGradleTemplate: 0
257 | useCustomGradlePropertiesTemplate: 0
258 | useCustomGradleSettingsTemplate: 0
259 | useCustomProguardFile: 0
260 | AndroidTargetArchitectures: 1
261 | AndroidTargetDevices: 0
262 | AndroidSplashScreenScale: 0
263 | androidSplashScreen: {fileID: 0}
264 | AndroidKeystoreName:
265 | AndroidKeyaliasName:
266 | AndroidEnableArmv9SecurityFeatures: 0
267 | AndroidBuildApkPerCpuArchitecture: 0
268 | AndroidTVCompatibility: 0
269 | AndroidIsGame: 1
270 | AndroidEnableTango: 0
271 | androidEnableBanner: 1
272 | androidUseLowAccuracyLocation: 0
273 | androidUseCustomKeystore: 0
274 | m_AndroidBanners:
275 | - width: 320
276 | height: 180
277 | banner: {fileID: 0}
278 | androidGamepadSupportLevel: 0
279 | chromeosInputEmulation: 1
280 | AndroidMinifyRelease: 0
281 | AndroidMinifyDebug: 0
282 | AndroidValidateAppBundleSize: 1
283 | AndroidAppBundleSizeToValidate: 150
284 | m_BuildTargetIcons: []
285 | m_BuildTargetPlatformIcons: []
286 | m_BuildTargetBatching:
287 | - m_BuildTarget: Standalone
288 | m_StaticBatching: 1
289 | m_DynamicBatching: 0
290 | - m_BuildTarget: tvOS
291 | m_StaticBatching: 1
292 | m_DynamicBatching: 0
293 | - m_BuildTarget: Android
294 | m_StaticBatching: 1
295 | m_DynamicBatching: 0
296 | - m_BuildTarget: iPhone
297 | m_StaticBatching: 1
298 | m_DynamicBatching: 0
299 | - m_BuildTarget: WebGL
300 | m_StaticBatching: 0
301 | m_DynamicBatching: 0
302 | m_BuildTargetShaderSettings: []
303 | m_BuildTargetGraphicsJobs:
304 | - m_BuildTarget: MacStandaloneSupport
305 | m_GraphicsJobs: 0
306 | - m_BuildTarget: Switch
307 | m_GraphicsJobs: 1
308 | - m_BuildTarget: MetroSupport
309 | m_GraphicsJobs: 1
310 | - m_BuildTarget: AppleTVSupport
311 | m_GraphicsJobs: 0
312 | - m_BuildTarget: BJMSupport
313 | m_GraphicsJobs: 1
314 | - m_BuildTarget: LinuxStandaloneSupport
315 | m_GraphicsJobs: 1
316 | - m_BuildTarget: PS4Player
317 | m_GraphicsJobs: 1
318 | - m_BuildTarget: iOSSupport
319 | m_GraphicsJobs: 0
320 | - m_BuildTarget: WindowsStandaloneSupport
321 | m_GraphicsJobs: 1
322 | - m_BuildTarget: XboxOnePlayer
323 | m_GraphicsJobs: 1
324 | - m_BuildTarget: LuminSupport
325 | m_GraphicsJobs: 0
326 | - m_BuildTarget: AndroidPlayer
327 | m_GraphicsJobs: 0
328 | - m_BuildTarget: WebGLSupport
329 | m_GraphicsJobs: 0
330 | m_BuildTargetGraphicsJobMode:
331 | - m_BuildTarget: PS4Player
332 | m_GraphicsJobMode: 0
333 | - m_BuildTarget: XboxOnePlayer
334 | m_GraphicsJobMode: 0
335 | m_BuildTargetGraphicsAPIs:
336 | - m_BuildTarget: AndroidPlayer
337 | m_APIs: 150000000b000000
338 | m_Automatic: 1
339 | - m_BuildTarget: iOSSupport
340 | m_APIs: 10000000
341 | m_Automatic: 1
342 | - m_BuildTarget: AppleTVSupport
343 | m_APIs: 10000000
344 | m_Automatic: 1
345 | - m_BuildTarget: WebGLSupport
346 | m_APIs: 0b000000
347 | m_Automatic: 1
348 | m_BuildTargetVRSettings:
349 | - m_BuildTarget: Standalone
350 | m_Enabled: 0
351 | m_Devices:
352 | - Oculus
353 | - OpenVR
354 | m_DefaultShaderChunkSizeInMB: 16
355 | m_DefaultShaderChunkCount: 0
356 | openGLRequireES31: 0
357 | openGLRequireES31AEP: 0
358 | openGLRequireES32: 0
359 | m_TemplateCustomTags: {}
360 | mobileMTRendering:
361 | Android: 1
362 | iPhone: 1
363 | tvOS: 1
364 | m_BuildTargetGroupLightmapEncodingQuality:
365 | - m_BuildTarget: Android
366 | m_EncodingQuality: 1
367 | - m_BuildTarget: iPhone
368 | m_EncodingQuality: 1
369 | - m_BuildTarget: tvOS
370 | m_EncodingQuality: 1
371 | m_BuildTargetGroupHDRCubemapEncodingQuality:
372 | - m_BuildTarget: Android
373 | m_EncodingQuality: 1
374 | - m_BuildTarget: iPhone
375 | m_EncodingQuality: 1
376 | - m_BuildTarget: tvOS
377 | m_EncodingQuality: 1
378 | m_BuildTargetGroupLightmapSettings: []
379 | m_BuildTargetGroupLoadStoreDebugModeSettings: []
380 | m_BuildTargetNormalMapEncoding:
381 | - m_BuildTarget: Android
382 | m_Encoding: 1
383 | - m_BuildTarget: iPhone
384 | m_Encoding: 1
385 | - m_BuildTarget: tvOS
386 | m_Encoding: 1
387 | m_BuildTargetDefaultTextureCompressionFormat:
388 | - m_BuildTarget: Android
389 | m_Format: 3
390 | playModeTestRunnerEnabled: 0
391 | runPlayModeTestAsEditModeTest: 0
392 | actionOnDotNetUnhandledException: 1
393 | enableInternalProfiler: 0
394 | logObjCUncaughtExceptions: 1
395 | enableCrashReportAPI: 0
396 | cameraUsageDescription:
397 | locationUsageDescription:
398 | microphoneUsageDescription:
399 | bluetoothUsageDescription:
400 | macOSTargetOSVersion: 10.13.0
401 | switchNMETAOverride:
402 | switchNetLibKey:
403 | switchSocketMemoryPoolSize: 6144
404 | switchSocketAllocatorPoolSize: 128
405 | switchSocketConcurrencyLimit: 14
406 | switchScreenResolutionBehavior: 2
407 | switchUseCPUProfiler: 0
408 | switchEnableFileSystemTrace: 0
409 | switchLTOSetting: 0
410 | switchApplicationID: 0x01004b9000490000
411 | switchNSODependencies:
412 | switchCompilerFlags:
413 | switchTitleNames_0:
414 | switchTitleNames_1:
415 | switchTitleNames_2:
416 | switchTitleNames_3:
417 | switchTitleNames_4:
418 | switchTitleNames_5:
419 | switchTitleNames_6:
420 | switchTitleNames_7:
421 | switchTitleNames_8:
422 | switchTitleNames_9:
423 | switchTitleNames_10:
424 | switchTitleNames_11:
425 | switchTitleNames_12:
426 | switchTitleNames_13:
427 | switchTitleNames_14:
428 | switchTitleNames_15:
429 | switchPublisherNames_0:
430 | switchPublisherNames_1:
431 | switchPublisherNames_2:
432 | switchPublisherNames_3:
433 | switchPublisherNames_4:
434 | switchPublisherNames_5:
435 | switchPublisherNames_6:
436 | switchPublisherNames_7:
437 | switchPublisherNames_8:
438 | switchPublisherNames_9:
439 | switchPublisherNames_10:
440 | switchPublisherNames_11:
441 | switchPublisherNames_12:
442 | switchPublisherNames_13:
443 | switchPublisherNames_14:
444 | switchPublisherNames_15:
445 | switchIcons_0: {fileID: 0}
446 | switchIcons_1: {fileID: 0}
447 | switchIcons_2: {fileID: 0}
448 | switchIcons_3: {fileID: 0}
449 | switchIcons_4: {fileID: 0}
450 | switchIcons_5: {fileID: 0}
451 | switchIcons_6: {fileID: 0}
452 | switchIcons_7: {fileID: 0}
453 | switchIcons_8: {fileID: 0}
454 | switchIcons_9: {fileID: 0}
455 | switchIcons_10: {fileID: 0}
456 | switchIcons_11: {fileID: 0}
457 | switchIcons_12: {fileID: 0}
458 | switchIcons_13: {fileID: 0}
459 | switchIcons_14: {fileID: 0}
460 | switchIcons_15: {fileID: 0}
461 | switchSmallIcons_0: {fileID: 0}
462 | switchSmallIcons_1: {fileID: 0}
463 | switchSmallIcons_2: {fileID: 0}
464 | switchSmallIcons_3: {fileID: 0}
465 | switchSmallIcons_4: {fileID: 0}
466 | switchSmallIcons_5: {fileID: 0}
467 | switchSmallIcons_6: {fileID: 0}
468 | switchSmallIcons_7: {fileID: 0}
469 | switchSmallIcons_8: {fileID: 0}
470 | switchSmallIcons_9: {fileID: 0}
471 | switchSmallIcons_10: {fileID: 0}
472 | switchSmallIcons_11: {fileID: 0}
473 | switchSmallIcons_12: {fileID: 0}
474 | switchSmallIcons_13: {fileID: 0}
475 | switchSmallIcons_14: {fileID: 0}
476 | switchSmallIcons_15: {fileID: 0}
477 | switchManualHTML:
478 | switchAccessibleURLs:
479 | switchLegalInformation:
480 | switchMainThreadStackSize: 1048576
481 | switchPresenceGroupId:
482 | switchLogoHandling: 0
483 | switchReleaseVersion: 0
484 | switchDisplayVersion: 1.0.0
485 | switchStartupUserAccount: 0
486 | switchSupportedLanguagesMask: 0
487 | switchLogoType: 0
488 | switchApplicationErrorCodeCategory:
489 | switchUserAccountSaveDataSize: 0
490 | switchUserAccountSaveDataJournalSize: 0
491 | switchApplicationAttribute: 0
492 | switchCardSpecSize: -1
493 | switchCardSpecClock: -1
494 | switchRatingsMask: 0
495 | switchRatingsInt_0: 0
496 | switchRatingsInt_1: 0
497 | switchRatingsInt_2: 0
498 | switchRatingsInt_3: 0
499 | switchRatingsInt_4: 0
500 | switchRatingsInt_5: 0
501 | switchRatingsInt_6: 0
502 | switchRatingsInt_7: 0
503 | switchRatingsInt_8: 0
504 | switchRatingsInt_9: 0
505 | switchRatingsInt_10: 0
506 | switchRatingsInt_11: 0
507 | switchRatingsInt_12: 0
508 | switchLocalCommunicationIds_0:
509 | switchLocalCommunicationIds_1:
510 | switchLocalCommunicationIds_2:
511 | switchLocalCommunicationIds_3:
512 | switchLocalCommunicationIds_4:
513 | switchLocalCommunicationIds_5:
514 | switchLocalCommunicationIds_6:
515 | switchLocalCommunicationIds_7:
516 | switchParentalControl: 0
517 | switchAllowsScreenshot: 1
518 | switchAllowsVideoCapturing: 1
519 | switchAllowsRuntimeAddOnContentInstall: 0
520 | switchDataLossConfirmation: 0
521 | switchUserAccountLockEnabled: 0
522 | switchSystemResourceMemory: 16777216
523 | switchSupportedNpadStyles: 22
524 | switchNativeFsCacheSize: 32
525 | switchIsHoldTypeHorizontal: 0
526 | switchSupportedNpadCount: 8
527 | switchEnableTouchScreen: 1
528 | switchSocketConfigEnabled: 0
529 | switchTcpInitialSendBufferSize: 32
530 | switchTcpInitialReceiveBufferSize: 64
531 | switchTcpAutoSendBufferSizeMax: 256
532 | switchTcpAutoReceiveBufferSizeMax: 256
533 | switchUdpSendBufferSize: 9
534 | switchUdpReceiveBufferSize: 42
535 | switchSocketBufferEfficiency: 4
536 | switchSocketInitializeEnabled: 1
537 | switchNetworkInterfaceManagerInitializeEnabled: 1
538 | switchUseNewStyleFilepaths: 1
539 | switchUseLegacyFmodPriorities: 0
540 | switchUseMicroSleepForYield: 1
541 | switchEnableRamDiskSupport: 0
542 | switchMicroSleepForYieldTime: 25
543 | switchRamDiskSpaceSize: 12
544 | ps4NPAgeRating: 12
545 | ps4NPTitleSecret:
546 | ps4NPTrophyPackPath:
547 | ps4ParentalLevel: 11
548 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000
549 | ps4Category: 0
550 | ps4MasterVersion: 01.00
551 | ps4AppVersion: 01.00
552 | ps4AppType: 0
553 | ps4ParamSfxPath:
554 | ps4VideoOutPixelFormat: 0
555 | ps4VideoOutInitialWidth: 1920
556 | ps4VideoOutBaseModeInitialWidth: 1920
557 | ps4VideoOutReprojectionRate: 60
558 | ps4PronunciationXMLPath:
559 | ps4PronunciationSIGPath:
560 | ps4BackgroundImagePath:
561 | ps4StartupImagePath:
562 | ps4StartupImagesFolder:
563 | ps4IconImagesFolder:
564 | ps4SaveDataImagePath:
565 | ps4SdkOverride:
566 | ps4BGMPath:
567 | ps4ShareFilePath:
568 | ps4ShareOverlayImagePath:
569 | ps4PrivacyGuardImagePath:
570 | ps4ExtraSceSysFile:
571 | ps4NPtitleDatPath:
572 | ps4RemotePlayKeyAssignment: -1
573 | ps4RemotePlayKeyMappingDir:
574 | ps4PlayTogetherPlayerCount: 0
575 | ps4EnterButtonAssignment: 1
576 | ps4ApplicationParam1: 0
577 | ps4ApplicationParam2: 0
578 | ps4ApplicationParam3: 0
579 | ps4ApplicationParam4: 0
580 | ps4DownloadDataSize: 0
581 | ps4GarlicHeapSize: 2048
582 | ps4ProGarlicHeapSize: 2560
583 | playerPrefsMaxSize: 32768
584 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
585 | ps4pnSessions: 1
586 | ps4pnPresence: 1
587 | ps4pnFriends: 1
588 | ps4pnGameCustomData: 1
589 | playerPrefsSupport: 0
590 | enableApplicationExit: 0
591 | resetTempFolder: 1
592 | restrictedAudioUsageRights: 0
593 | ps4UseResolutionFallback: 0
594 | ps4ReprojectionSupport: 0
595 | ps4UseAudio3dBackend: 0
596 | ps4UseLowGarlicFragmentationMode: 1
597 | ps4SocialScreenEnabled: 0
598 | ps4ScriptOptimizationLevel: 0
599 | ps4Audio3dVirtualSpeakerCount: 14
600 | ps4attribCpuUsage: 0
601 | ps4PatchPkgPath:
602 | ps4PatchLatestPkgPath:
603 | ps4PatchChangeinfoPath:
604 | ps4PatchDayOne: 0
605 | ps4attribUserManagement: 0
606 | ps4attribMoveSupport: 0
607 | ps4attrib3DSupport: 0
608 | ps4attribShareSupport: 0
609 | ps4attribExclusiveVR: 0
610 | ps4disableAutoHideSplash: 0
611 | ps4videoRecordingFeaturesUsed: 0
612 | ps4contentSearchFeaturesUsed: 0
613 | ps4CompatibilityPS5: 0
614 | ps4AllowPS5Detection: 0
615 | ps4GPU800MHz: 1
616 | ps4attribEyeToEyeDistanceSettingVR: 0
617 | ps4IncludedModules: []
618 | ps4attribVROutputEnabled: 0
619 | monoEnv:
620 | splashScreenBackgroundSourceLandscape: {fileID: 0}
621 | splashScreenBackgroundSourcePortrait: {fileID: 0}
622 | blurSplashScreenBackground: 1
623 | spritePackerPolicy:
624 | webGLMemorySize: 16
625 | webGLExceptionSupport: 1
626 | webGLNameFilesAsHashes: 0
627 | webGLShowDiagnostics: 0
628 | webGLDataCaching: 1
629 | webGLDebugSymbols: 0
630 | webGLEmscriptenArgs:
631 | webGLModulesDirectory:
632 | webGLTemplate: APPLICATION:Default
633 | webGLAnalyzeBuildSize: 0
634 | webGLUseEmbeddedResources: 0
635 | webGLCompressionFormat: 1
636 | webGLWasmArithmeticExceptions: 0
637 | webGLLinkerTarget: 1
638 | webGLThreadsSupport: 0
639 | webGLDecompressionFallback: 0
640 | webGLInitialMemorySize: 32
641 | webGLMaximumMemorySize: 2048
642 | webGLMemoryGrowthMode: 2
643 | webGLMemoryLinearGrowthStep: 16
644 | webGLMemoryGeometricGrowthStep: 0.2
645 | webGLMemoryGeometricGrowthCap: 96
646 | webGLPowerPreference: 2
647 | scriptingDefineSymbols: {}
648 | additionalCompilerArguments: {}
649 | platformArchitecture: {}
650 | scriptingBackend: {}
651 | il2cppCompilerConfiguration: {}
652 | il2cppCodeGeneration: {}
653 | managedStrippingLevel:
654 | EmbeddedLinux: 1
655 | GameCoreScarlett: 1
656 | GameCoreXboxOne: 1
657 | Nintendo Switch: 1
658 | PS4: 1
659 | PS5: 1
660 | QNX: 1
661 | Stadia: 1
662 | VisionOS: 1
663 | WebGL: 1
664 | Windows Store Apps: 1
665 | XboxOne: 1
666 | iPhone: 1
667 | tvOS: 1
668 | incrementalIl2cppBuild: {}
669 | suppressCommonWarnings: 1
670 | allowUnsafeCode: 0
671 | useDeterministicCompilation: 1
672 | additionalIl2CppArgs:
673 | scriptingRuntimeVersion: 1
674 | gcIncremental: 1
675 | gcWBarrierValidation: 0
676 | apiCompatibilityLevelPerPlatform: {}
677 | m_RenderingPath: 1
678 | m_MobileRenderingPath: 1
679 | metroPackageName: DebugCommandExecutor
680 | metroPackageVersion:
681 | metroCertificatePath:
682 | metroCertificatePassword:
683 | metroCertificateSubject:
684 | metroCertificateIssuer:
685 | metroCertificateNotAfter: 0000000000000000
686 | metroApplicationDescription: DebugCommandExecutor
687 | wsaImages: {}
688 | metroTileShortName:
689 | metroTileShowName: 0
690 | metroMediumTileShowName: 0
691 | metroLargeTileShowName: 0
692 | metroWideTileShowName: 0
693 | metroSupportStreamingInstall: 0
694 | metroLastRequiredScene: 0
695 | metroDefaultTileSize: 1
696 | metroTileForegroundText: 2
697 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
698 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1}
699 | metroSplashScreenUseBackgroundColor: 0
700 | platformCapabilities: {}
701 | metroTargetDeviceFamilies: {}
702 | metroFTAName:
703 | metroFTAFileTypes: []
704 | metroProtocolName:
705 | vcxProjDefaultLanguage:
706 | XboxOneProductId:
707 | XboxOneUpdateKey:
708 | XboxOneSandboxId:
709 | XboxOneContentId:
710 | XboxOneTitleId:
711 | XboxOneSCId:
712 | XboxOneGameOsOverridePath:
713 | XboxOnePackagingOverridePath:
714 | XboxOneAppManifestOverridePath:
715 | XboxOneVersion: 1.0.0.0
716 | XboxOnePackageEncryption: 0
717 | XboxOnePackageUpdateGranularity: 2
718 | XboxOneDescription:
719 | XboxOneLanguage:
720 | - enus
721 | XboxOneCapability: []
722 | XboxOneGameRating: {}
723 | XboxOneIsContentPackage: 0
724 | XboxOneEnhancedXboxCompatibilityMode: 0
725 | XboxOneEnableGPUVariability: 1
726 | XboxOneSockets: {}
727 | XboxOneSplashScreen: {fileID: 0}
728 | XboxOneAllowedProductIds: []
729 | XboxOnePersistentLocalStorageSize: 0
730 | XboxOneXTitleMemory: 8
731 | XboxOneOverrideIdentityName:
732 | XboxOneOverrideIdentityPublisher:
733 | vrEditorSettings: {}
734 | cloudServicesEnabled:
735 | UNet: 1
736 | luminIcon:
737 | m_Name:
738 | m_ModelFolderPath:
739 | m_PortalFolderPath:
740 | luminCert:
741 | m_CertPath:
742 | m_SignPackage: 1
743 | luminIsChannelApp: 0
744 | luminVersion:
745 | m_VersionCode: 1
746 | m_VersionName:
747 | hmiPlayerDataPath:
748 | hmiForceSRGBBlit: 1
749 | embeddedLinuxEnableGamepadInput: 1
750 | hmiLogStartupTiming: 0
751 | hmiCpuConfiguration:
752 | apiCompatibilityLevel: 6
753 | activeInputHandler: 0
754 | windowsGamepadBackendHint: 0
755 | cloudProjectId:
756 | framebufferDepthMemorylessMode: 0
757 | qualitySettingsNames: []
758 | projectName:
759 | organizationId:
760 | cloudEnabled: 0
761 | legacyClampBlendShapeWeights: 0
762 | hmiLoadingImage: {fileID: 0}
763 | platformRequiresReadableAssets: 0
764 | virtualTexturingSupportEnabled: 0
765 | insecureHttpOption: 0
766 |
--------------------------------------------------------------------------------
/ProjectSettings/ProjectVersion.txt:
--------------------------------------------------------------------------------
1 | m_EditorVersion: 6000.0.15f1
2 | m_EditorVersionWithRevision: 6000.0.15f1 (6a96561936c0)
3 |
--------------------------------------------------------------------------------
/ProjectSettings/QualitySettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!47 &1
4 | QualitySettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 5
7 | m_CurrentQuality: 5
8 | m_QualitySettings:
9 | - serializedVersion: 2
10 | name: Very Low
11 | pixelLightCount: 0
12 | shadows: 0
13 | shadowResolution: 0
14 | shadowProjection: 1
15 | shadowCascades: 1
16 | shadowDistance: 15
17 | shadowNearPlaneOffset: 3
18 | shadowCascade2Split: 0.33333334
19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
20 | shadowmaskMode: 0
21 | blendWeights: 1
22 | textureQuality: 1
23 | anisotropicTextures: 0
24 | antiAliasing: 0
25 | softParticles: 0
26 | softVegetation: 0
27 | realtimeReflectionProbes: 0
28 | billboardsFaceCameraPosition: 0
29 | vSyncCount: 0
30 | lodBias: 0.3
31 | maximumLODLevel: 0
32 | streamingMipmapsActive: 0
33 | streamingMipmapsAddAllCameras: 1
34 | streamingMipmapsMemoryBudget: 512
35 | streamingMipmapsRenderersPerFrame: 512
36 | streamingMipmapsMaxLevelReduction: 2
37 | streamingMipmapsMaxFileIORequests: 1024
38 | particleRaycastBudget: 4
39 | asyncUploadTimeSlice: 2
40 | asyncUploadBufferSize: 16
41 | asyncUploadPersistentBuffer: 1
42 | resolutionScalingFixedDPIFactor: 1
43 | excludedTargetPlatforms: []
44 | - serializedVersion: 2
45 | name: Low
46 | pixelLightCount: 0
47 | shadows: 0
48 | shadowResolution: 0
49 | shadowProjection: 1
50 | shadowCascades: 1
51 | shadowDistance: 20
52 | shadowNearPlaneOffset: 3
53 | shadowCascade2Split: 0.33333334
54 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
55 | shadowmaskMode: 0
56 | blendWeights: 2
57 | textureQuality: 0
58 | anisotropicTextures: 0
59 | antiAliasing: 0
60 | softParticles: 0
61 | softVegetation: 0
62 | realtimeReflectionProbes: 0
63 | billboardsFaceCameraPosition: 0
64 | vSyncCount: 0
65 | lodBias: 0.4
66 | maximumLODLevel: 0
67 | streamingMipmapsActive: 0
68 | streamingMipmapsAddAllCameras: 1
69 | streamingMipmapsMemoryBudget: 512
70 | streamingMipmapsRenderersPerFrame: 512
71 | streamingMipmapsMaxLevelReduction: 2
72 | streamingMipmapsMaxFileIORequests: 1024
73 | particleRaycastBudget: 16
74 | asyncUploadTimeSlice: 2
75 | asyncUploadBufferSize: 16
76 | asyncUploadPersistentBuffer: 1
77 | resolutionScalingFixedDPIFactor: 1
78 | excludedTargetPlatforms: []
79 | - serializedVersion: 2
80 | name: Medium
81 | pixelLightCount: 1
82 | shadows: 1
83 | shadowResolution: 0
84 | shadowProjection: 1
85 | shadowCascades: 1
86 | shadowDistance: 20
87 | shadowNearPlaneOffset: 3
88 | shadowCascade2Split: 0.33333334
89 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
90 | shadowmaskMode: 0
91 | blendWeights: 2
92 | textureQuality: 0
93 | anisotropicTextures: 1
94 | antiAliasing: 0
95 | softParticles: 0
96 | softVegetation: 0
97 | realtimeReflectionProbes: 0
98 | billboardsFaceCameraPosition: 0
99 | vSyncCount: 1
100 | lodBias: 0.7
101 | maximumLODLevel: 0
102 | streamingMipmapsActive: 0
103 | streamingMipmapsAddAllCameras: 1
104 | streamingMipmapsMemoryBudget: 512
105 | streamingMipmapsRenderersPerFrame: 512
106 | streamingMipmapsMaxLevelReduction: 2
107 | streamingMipmapsMaxFileIORequests: 1024
108 | particleRaycastBudget: 64
109 | asyncUploadTimeSlice: 2
110 | asyncUploadBufferSize: 16
111 | asyncUploadPersistentBuffer: 1
112 | resolutionScalingFixedDPIFactor: 1
113 | excludedTargetPlatforms: []
114 | - serializedVersion: 2
115 | name: High
116 | pixelLightCount: 2
117 | shadows: 2
118 | shadowResolution: 1
119 | shadowProjection: 1
120 | shadowCascades: 2
121 | shadowDistance: 40
122 | shadowNearPlaneOffset: 3
123 | shadowCascade2Split: 0.33333334
124 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
125 | shadowmaskMode: 1
126 | blendWeights: 2
127 | textureQuality: 0
128 | anisotropicTextures: 1
129 | antiAliasing: 0
130 | softParticles: 0
131 | softVegetation: 1
132 | realtimeReflectionProbes: 1
133 | billboardsFaceCameraPosition: 1
134 | vSyncCount: 1
135 | lodBias: 1
136 | maximumLODLevel: 0
137 | streamingMipmapsActive: 0
138 | streamingMipmapsAddAllCameras: 1
139 | streamingMipmapsMemoryBudget: 512
140 | streamingMipmapsRenderersPerFrame: 512
141 | streamingMipmapsMaxLevelReduction: 2
142 | streamingMipmapsMaxFileIORequests: 1024
143 | particleRaycastBudget: 256
144 | asyncUploadTimeSlice: 2
145 | asyncUploadBufferSize: 16
146 | asyncUploadPersistentBuffer: 1
147 | resolutionScalingFixedDPIFactor: 1
148 | excludedTargetPlatforms: []
149 | - serializedVersion: 2
150 | name: Very High
151 | pixelLightCount: 3
152 | shadows: 2
153 | shadowResolution: 2
154 | shadowProjection: 1
155 | shadowCascades: 2
156 | shadowDistance: 70
157 | shadowNearPlaneOffset: 3
158 | shadowCascade2Split: 0.33333334
159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
160 | shadowmaskMode: 1
161 | blendWeights: 4
162 | textureQuality: 0
163 | anisotropicTextures: 2
164 | antiAliasing: 2
165 | softParticles: 1
166 | softVegetation: 1
167 | realtimeReflectionProbes: 1
168 | billboardsFaceCameraPosition: 1
169 | vSyncCount: 1
170 | lodBias: 1.5
171 | maximumLODLevel: 0
172 | streamingMipmapsActive: 0
173 | streamingMipmapsAddAllCameras: 1
174 | streamingMipmapsMemoryBudget: 512
175 | streamingMipmapsRenderersPerFrame: 512
176 | streamingMipmapsMaxLevelReduction: 2
177 | streamingMipmapsMaxFileIORequests: 1024
178 | particleRaycastBudget: 1024
179 | asyncUploadTimeSlice: 2
180 | asyncUploadBufferSize: 16
181 | asyncUploadPersistentBuffer: 1
182 | resolutionScalingFixedDPIFactor: 1
183 | excludedTargetPlatforms: []
184 | - serializedVersion: 2
185 | name: Ultra
186 | pixelLightCount: 4
187 | shadows: 2
188 | shadowResolution: 2
189 | shadowProjection: 1
190 | shadowCascades: 4
191 | shadowDistance: 150
192 | shadowNearPlaneOffset: 3
193 | shadowCascade2Split: 0.33333334
194 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
195 | shadowmaskMode: 1
196 | blendWeights: 4
197 | textureQuality: 0
198 | anisotropicTextures: 2
199 | antiAliasing: 2
200 | softParticles: 1
201 | softVegetation: 1
202 | realtimeReflectionProbes: 1
203 | billboardsFaceCameraPosition: 1
204 | vSyncCount: 1
205 | lodBias: 2
206 | maximumLODLevel: 0
207 | streamingMipmapsActive: 0
208 | streamingMipmapsAddAllCameras: 1
209 | streamingMipmapsMemoryBudget: 512
210 | streamingMipmapsRenderersPerFrame: 512
211 | streamingMipmapsMaxLevelReduction: 2
212 | streamingMipmapsMaxFileIORequests: 1024
213 | particleRaycastBudget: 4096
214 | asyncUploadTimeSlice: 2
215 | asyncUploadBufferSize: 16
216 | asyncUploadPersistentBuffer: 1
217 | resolutionScalingFixedDPIFactor: 1
218 | excludedTargetPlatforms: []
219 | m_PerPlatformDefaultQuality:
220 | Android: 2
221 | Lumin: 5
222 | Nintendo 3DS: 5
223 | Nintendo Switch: 5
224 | PS4: 5
225 | PSP2: 2
226 | Stadia: 5
227 | Standalone: 5
228 | WebGL: 3
229 | Windows Store Apps: 5
230 | XboxOne: 5
231 | iPhone: 2
232 | tvOS: 2
233 |
--------------------------------------------------------------------------------
/ProjectSettings/SceneTemplateSettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "templatePinStates": [],
3 | "dependencyTypeInfos": [
4 | {
5 | "userAdded": false,
6 | "type": "UnityEngine.AnimationClip",
7 | "defaultInstantiationMode": 0
8 | },
9 | {
10 | "userAdded": false,
11 | "type": "UnityEditor.Animations.AnimatorController",
12 | "defaultInstantiationMode": 0
13 | },
14 | {
15 | "userAdded": false,
16 | "type": "UnityEngine.AnimatorOverrideController",
17 | "defaultInstantiationMode": 0
18 | },
19 | {
20 | "userAdded": false,
21 | "type": "UnityEditor.Audio.AudioMixerController",
22 | "defaultInstantiationMode": 0
23 | },
24 | {
25 | "userAdded": false,
26 | "type": "UnityEngine.ComputeShader",
27 | "defaultInstantiationMode": 1
28 | },
29 | {
30 | "userAdded": false,
31 | "type": "UnityEngine.Cubemap",
32 | "defaultInstantiationMode": 0
33 | },
34 | {
35 | "userAdded": false,
36 | "type": "UnityEngine.GameObject",
37 | "defaultInstantiationMode": 0
38 | },
39 | {
40 | "userAdded": false,
41 | "type": "UnityEditor.LightingDataAsset",
42 | "defaultInstantiationMode": 0
43 | },
44 | {
45 | "userAdded": false,
46 | "type": "UnityEngine.LightingSettings",
47 | "defaultInstantiationMode": 0
48 | },
49 | {
50 | "userAdded": false,
51 | "type": "UnityEngine.Material",
52 | "defaultInstantiationMode": 0
53 | },
54 | {
55 | "userAdded": false,
56 | "type": "UnityEditor.MonoScript",
57 | "defaultInstantiationMode": 1
58 | },
59 | {
60 | "userAdded": false,
61 | "type": "UnityEngine.PhysicMaterial",
62 | "defaultInstantiationMode": 0
63 | },
64 | {
65 | "userAdded": false,
66 | "type": "UnityEngine.PhysicsMaterial2D",
67 | "defaultInstantiationMode": 0
68 | },
69 | {
70 | "userAdded": false,
71 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile",
72 | "defaultInstantiationMode": 0
73 | },
74 | {
75 | "userAdded": false,
76 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources",
77 | "defaultInstantiationMode": 0
78 | },
79 | {
80 | "userAdded": false,
81 | "type": "UnityEngine.Rendering.VolumeProfile",
82 | "defaultInstantiationMode": 0
83 | },
84 | {
85 | "userAdded": false,
86 | "type": "UnityEditor.SceneAsset",
87 | "defaultInstantiationMode": 1
88 | },
89 | {
90 | "userAdded": false,
91 | "type": "UnityEngine.Shader",
92 | "defaultInstantiationMode": 1
93 | },
94 | {
95 | "userAdded": false,
96 | "type": "UnityEngine.ShaderVariantCollection",
97 | "defaultInstantiationMode": 1
98 | },
99 | {
100 | "userAdded": false,
101 | "type": "UnityEngine.Texture",
102 | "defaultInstantiationMode": 0
103 | },
104 | {
105 | "userAdded": false,
106 | "type": "UnityEngine.Texture2D",
107 | "defaultInstantiationMode": 0
108 | },
109 | {
110 | "userAdded": false,
111 | "type": "UnityEngine.Timeline.TimelineAsset",
112 | "defaultInstantiationMode": 0
113 | }
114 | ],
115 | "defaultDependencyTypeInfo": {
116 | "userAdded": false,
117 | "type": "",
118 | "defaultInstantiationMode": 1
119 | },
120 | "newSceneOverride": 0
121 | }
--------------------------------------------------------------------------------
/ProjectSettings/TagManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!78 &1
4 | TagManager:
5 | serializedVersion: 2
6 | tags: []
7 | layers:
8 | - Default
9 | - TransparentFX
10 | - Ignore Raycast
11 | -
12 | - Water
13 | - UI
14 | -
15 | -
16 | -
17 | -
18 | -
19 | -
20 | -
21 | -
22 | -
23 | -
24 | -
25 | -
26 | -
27 | -
28 | -
29 | -
30 | -
31 | -
32 | -
33 | -
34 | -
35 | -
36 | -
37 | -
38 | -
39 | -
40 | m_SortingLayers:
41 | - name: Default
42 | uniqueID: 0
43 | locked: 0
44 |
--------------------------------------------------------------------------------
/ProjectSettings/TimeManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!5 &1
4 | TimeManager:
5 | m_ObjectHideFlags: 0
6 | Fixed Timestep: 0.02
7 | Maximum Allowed Timestep: 0.33333334
8 | m_TimeScale: 1
9 | Maximum Particle Timestep: 0.03
10 |
--------------------------------------------------------------------------------
/ProjectSettings/UnityConnectSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!310 &1
4 | UnityConnectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 1
7 | m_Enabled: 0
8 | m_TestMode: 0
9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com
12 | m_DashboardUrl: https://dashboard.unity3d.com
13 | m_TestInitMode: 0
14 | CrashReportingSettings:
15 | m_EventUrl: https://perf-events.cloud.unity3d.com
16 | m_Enabled: 0
17 | m_LogBufferSize: 10
18 | m_CaptureEditorExceptions: 1
19 | UnityPurchasingSettings:
20 | m_Enabled: 0
21 | m_TestMode: 0
22 | UnityAnalyticsSettings:
23 | m_Enabled: 0
24 | m_TestMode: 0
25 | m_InitializeOnStartup: 1
26 | m_PackageRequiringCoreStatsPresent: 0
27 | UnityAdsSettings:
28 | m_Enabled: 0
29 | m_InitializeOnStartup: 1
30 | m_TestMode: 0
31 | m_IosGameId:
32 | m_AndroidGameId:
33 | m_GameIds: {}
34 | m_GameId:
35 | PerformanceReportingSettings:
36 | m_Enabled: 0
37 |
--------------------------------------------------------------------------------
/ProjectSettings/VFXManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!937362698 &1
4 | VFXManager:
5 | m_ObjectHideFlags: 0
6 | m_IndirectShader: {fileID: 0}
7 | m_CopyBufferShader: {fileID: 0}
8 | m_SortShader: {fileID: 0}
9 | m_StripUpdateShader: {fileID: 0}
10 | m_RenderPipeSettingsPath:
11 | m_FixedTimeStep: 0.016666668
12 | m_MaxDeltaTime: 0.05
13 |
--------------------------------------------------------------------------------
/ProjectSettings/VersionControlSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!890905787 &1
4 | VersionControlSettings:
5 | m_ObjectHideFlags: 0
6 | m_Mode: Visible Meta Files
7 | m_CollabEditorSettings:
8 | inProgressEnabled: 1
9 |
--------------------------------------------------------------------------------
/ProjectSettings/XRSettings.asset:
--------------------------------------------------------------------------------
1 | {
2 | "m_SettingKeys": [
3 | "VR Device Disabled",
4 | "VR Device User Alert"
5 | ],
6 | "m_SettingValues": [
7 | "False",
8 | "False"
9 | ]
10 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | DebugCommandExecutor
2 | ===
3 |
4 | `https://github.com/kyubuns/DebugCommandExecutor.git?path=Assets/DebugCommandExecutor`
5 |
6 | https://github.com/kyubuns/DebugCommandExecutor/assets/961165/e88c7f76-1262-43e1-b89a-e96e87b15cd9
7 |
8 | ---
9 |
10 | ## Features
11 |
12 | - Just define the method with DebugCommandAttributes.
13 | - Debug commands can be sent to players from Editor on different devices on the same network.
14 | - [Attach in the Console Window is the trigger.](https://docs.unity3d.com/2022.3/Documentation/Manual/Console.html)
15 | - Autocomplete (Tab, Shift-Tab)
16 | - History (UpArrow, DownArrow)
17 |
18 | ## Define Debug Commands
19 |
20 | ```csharp
21 | [DebugCommand("Echo text")]
22 | public static void Echo(string text)
23 | {
24 | Debug.Log(text);
25 | }
26 |
27 | [DebugCommand]
28 | public static void Add(int a, int b)
29 | {
30 | Debug.Log($"{a} + {b} = {a + b}");
31 | }
32 | ```
33 |
34 | ## Execute
35 |
36 | Tools > Debug Command Executor > Window
37 |
38 | ## Note
39 |
40 | - `UNITY_EDITOR` or `DEVELOPMENT_BUILD` only.
41 |
42 | ## Recommend
43 |
44 | - By registering shortcuts, you can quickly input debugging commands at any time!
45 |
46 | 
47 |
48 | ## Target Environment
49 |
50 | - Unity2022.3 or later
51 |
52 | ## License
53 |
54 | MIT License (see [LICENSE](LICENSE))
55 |
--------------------------------------------------------------------------------