diff --git a/Basic/2DSpaceShooter/Assets/Readme.asset b/Basic/2DSpaceShooter/Assets/Readme.asset
new file mode 100644
index 000000000..17b605a3b
--- /dev/null
+++ b/Basic/2DSpaceShooter/Assets/Readme.asset
@@ -0,0 +1,39 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 3c6391202b371bf4f9b33f30f57e6b4c, type: 3}
+ m_Name: Readme
+ m_EditorClassIdentifier:
+ icon: {fileID: 2800000, guid: 6032b1899b04de841b94d52688040780, type: 3}
+ title: '2DSpaceShooter: A Bitesize Sample'
+ sections:
+ - heading: 2DSpaceShooter
+ text: 'The 2DSpaceShooter sample is a bitesize sample designed to demonstrate
+ networked 2D and physics-based character movement. This sample leverages Netcode
+ for GameObject''s (Netcode) NetworkRigidbody2D component and also showcases
+ object pooling. Read more about the sample from the '
+ linkText: 2DSpaceShooter bitesize sample documentation page.
+ url: https://docs-multiplayer.unity3d.com/netcode/current/learn/bitesize/bitesize-spaceshooter/index.html
+ - heading:
+ text: The entry scene for this game is the network scene. From there a game can
+ be hosted or an existing game can be joined.
+ linkText:
+ url:
+ - heading:
+ text: 'To read more about Netcode and its built-in features, see the '
+ linkText: Netcode documentation.
+ url: https://docs-multiplayer.unity3d.com/
+ - heading:
+ text: 'For more information about this bitesize sample or our other bitesize
+ samples, see the GitHub repo Readme from the '
+ linkText: Bitesize Samples GitHub public repository.
+ url: https://github.com/Unity-Technologies/com.unity.multiplayer.samples.bitesize
+ loadedLayout: 1
diff --git a/Basic/2DSpaceShooter/Assets/Readme.asset.meta b/Basic/2DSpaceShooter/Assets/Readme.asset.meta
new file mode 100644
index 000000000..182a87cad
--- /dev/null
+++ b/Basic/2DSpaceShooter/Assets/Readme.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 336c2a3ca33ff9c41a26c04d39997f3b
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Basic/2DSpaceShooter/Assets/Scripts/Readme.meta b/Basic/2DSpaceShooter/Assets/Scripts/Readme.meta
new file mode 100644
index 000000000..bb676ac8a
--- /dev/null
+++ b/Basic/2DSpaceShooter/Assets/Scripts/Readme.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a709676cf7d898a4fb44a11467a8abef
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Basic/2DSpaceShooter/Assets/Scripts/Readme/Editor.meta b/Basic/2DSpaceShooter/Assets/Scripts/Readme/Editor.meta
new file mode 100644
index 000000000..451702162
--- /dev/null
+++ b/Basic/2DSpaceShooter/Assets/Scripts/Readme/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7f269532866bbdb4a947ce985a2b068a
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Basic/2DSpaceShooter/Assets/Scripts/Readme/Editor/ReadmeEditor.cs b/Basic/2DSpaceShooter/Assets/Scripts/Readme/Editor/ReadmeEditor.cs
new file mode 100644
index 000000000..b195a3041
--- /dev/null
+++ b/Basic/2DSpaceShooter/Assets/Scripts/Readme/Editor/ReadmeEditor.cs
@@ -0,0 +1,184 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.IO;
+using System.Reflection;
+
+///
+/// Custom readme editor window based on the readme created for URP. For more context, see:
+/// https://github.com/Unity-Technologies/Graphics/tree/master/com.unity.template-universal
+///
+[CustomEditor(typeof(Readme))]
+[InitializeOnLoad]
+public class ReadmeEditor : UnityEditor.Editor
+{
+ const string k_ShowedReadmeSessionStateName = "ReadmeEditor.showedReadme";
+
+ const float k_Space = 16f;
+
+ bool m_Initialized;
+
+ [SerializeField]
+ GUIStyle m_LinkStyle;
+
+ GUIStyle LinkStyle
+ {
+ get { return m_LinkStyle; }
+ }
+
+ [SerializeField]
+ GUIStyle m_TitleStyle;
+
+ GUIStyle TitleStyle
+ {
+ get { return m_TitleStyle; }
+ }
+
+ [SerializeField]
+ GUIStyle m_HeadingStyle;
+
+ GUIStyle HeadingStyle
+ {
+ get { return m_HeadingStyle; }
+ }
+
+ [SerializeField]
+ GUIStyle m_BodyStyle;
+
+ GUIStyle BodyStyle
+ {
+ get { return m_BodyStyle; }
+ }
+
+ static ReadmeEditor()
+ {
+ EditorApplication.delayCall += SelectReadmeAutomatically;
+ }
+
+ static void SelectReadmeAutomatically()
+ {
+ if (!SessionState.GetBool(k_ShowedReadmeSessionStateName, false))
+ {
+ var readme = SelectReadme();
+ SessionState.SetBool(k_ShowedReadmeSessionStateName, true);
+
+ if (readme && !readme.loadedLayout)
+ {
+ LoadLayout();
+ readme.loadedLayout = true;
+ }
+ }
+ }
+
+ static void LoadLayout()
+ {
+ var assembly = typeof(EditorApplication).Assembly;
+ var windowLayoutType = assembly.GetType("UnityEditor.WindowLayout", true);
+ var method = windowLayoutType.GetMethod("LoadWindowLayout", BindingFlags.Public | BindingFlags.Static);
+ method?.Invoke(null, new object[] { Path.Combine(Application.dataPath, "TutorialInfo/Layout.wlt"), false });
+ }
+
+ [MenuItem("Sample/Show Sample Instructions")]
+ static Readme SelectReadme()
+ {
+ var ids = AssetDatabase.FindAssets("Readme t:Readme");
+ if (ids.Length == 1)
+ {
+ var readmeObject = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(ids[0]));
+
+ Selection.objects = new UnityEngine.Object[] { readmeObject };
+
+ return (Readme)readmeObject;
+ }
+ else
+ {
+ Debug.Log("Couldn't find a readme");
+ return null;
+ }
+ }
+
+ protected override void OnHeaderGUI()
+ {
+ var readme = (Readme)target;
+ Init();
+
+ var iconWidth = Mathf.Min(EditorGUIUtility.currentViewWidth / 3f - 20f, 128f);
+
+ GUILayout.BeginHorizontal("In BigTitle");
+ {
+ GUILayout.Label(readme.icon, GUILayout.Width(iconWidth), GUILayout.Height(iconWidth));
+ GUILayout.Label(readme.title, TitleStyle);
+ }
+ GUILayout.EndHorizontal();
+ }
+
+ public override void OnInspectorGUI()
+ {
+ var readme = (Readme)target;
+ Init();
+
+ foreach (var section in readme.sections)
+ {
+ if (!string.IsNullOrEmpty(section.heading))
+ {
+ GUILayout.Label(section.heading, HeadingStyle);
+ }
+
+ if (!string.IsNullOrEmpty(section.text))
+ {
+ GUILayout.Label(section.text, BodyStyle);
+ }
+
+ if (!string.IsNullOrEmpty(section.linkText))
+ {
+ if (LinkLabel(new GUIContent(section.linkText)))
+ {
+ Application.OpenURL(section.url);
+ }
+ }
+
+ GUILayout.Space(k_Space);
+ }
+ }
+
+
+
+ void Init()
+ {
+ if (m_Initialized)
+ return;
+ m_BodyStyle = new GUIStyle(EditorStyles.label);
+ m_BodyStyle.wordWrap = true;
+ m_BodyStyle.fontSize = 14;
+
+ m_TitleStyle = new GUIStyle(m_BodyStyle);
+ m_TitleStyle.fontSize = 26;
+
+ m_HeadingStyle = new GUIStyle(m_BodyStyle);
+ m_HeadingStyle.fontSize = 18;
+
+ m_LinkStyle = new GUIStyle(m_BodyStyle);
+ m_LinkStyle.wordWrap = false;
+
+ // Match selection color which works nicely for both light and dark skins
+ m_LinkStyle.normal.textColor = new Color(0x00 / 255f, 0x78 / 255f, 0xDA / 255f, 1f);
+ m_LinkStyle.stretchWidth = false;
+
+ m_Initialized = true;
+ }
+
+ bool LinkLabel(GUIContent label, params GUILayoutOption[] options)
+ {
+ var position = GUILayoutUtility.GetRect(label, LinkStyle, options);
+
+ Handles.BeginGUI();
+ Handles.color = LinkStyle.normal.textColor;
+ Handles.DrawLine(new Vector3(position.xMin, position.yMax), new Vector3(position.xMax, position.yMax));
+ Handles.color = Color.white;
+ Handles.EndGUI();
+
+ EditorGUIUtility.AddCursorRect(position, MouseCursor.Link);
+
+ return GUI.Button(position, label, LinkStyle);
+ }
+}
diff --git a/Basic/2DSpaceShooter/Assets/Scripts/Readme/Editor/ReadmeEditor.cs.meta b/Basic/2DSpaceShooter/Assets/Scripts/Readme/Editor/ReadmeEditor.cs.meta
new file mode 100644
index 000000000..c983193b3
--- /dev/null
+++ b/Basic/2DSpaceShooter/Assets/Scripts/Readme/Editor/ReadmeEditor.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: efbe9544bce578744877ba377e548dcf
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Basic/2DSpaceShooter/Assets/Scripts/Readme/Readme.cs b/Basic/2DSpaceShooter/Assets/Scripts/Readme/Readme.cs
new file mode 100644
index 000000000..b6863f0aa
--- /dev/null
+++ b/Basic/2DSpaceShooter/Assets/Scripts/Readme/Readme.cs
@@ -0,0 +1,24 @@
+using System;
+using UnityEngine;
+
+///
+/// Custom readme class based on the readme created for URP. For more context, see:
+/// https://github.com/Unity-Technologies/Graphics/tree/master/com.unity.template-universal
+///
+[CreateAssetMenu]
+public class Readme : ScriptableObject
+{
+ public Texture2D icon;
+ public string title;
+ public Section[] sections;
+ public bool loadedLayout;
+
+ [Serializable]
+ public class Section
+ {
+ public string heading;
+ public string text;
+ public string linkText;
+ public string url;
+ }
+}
diff --git a/Basic/2DSpaceShooter/Assets/Scripts/Readme/Readme.cs.meta b/Basic/2DSpaceShooter/Assets/Scripts/Readme/Readme.cs.meta
new file mode 100644
index 000000000..5bed3e6a6
--- /dev/null
+++ b/Basic/2DSpaceShooter/Assets/Scripts/Readme/Readme.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3c6391202b371bf4f9b33f30f57e6b4c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Basic/2DSpaceShooter/Packages/manifest.json b/Basic/2DSpaceShooter/Packages/manifest.json
index efe850238..46c93f176 100644
--- a/Basic/2DSpaceShooter/Packages/manifest.json
+++ b/Basic/2DSpaceShooter/Packages/manifest.json
@@ -1,13 +1,14 @@
{
"dependencies": {
"com.unity.2d.sprite": "1.0.0",
- "com.unity.collab-proxy": "1.17.2",
- "com.unity.ide.rider": "3.0.15",
+ "com.unity.collab-proxy": "1.17.7",
+ "com.unity.ide.rider": "3.0.16",
"com.unity.ide.visualstudio": "2.0.16",
"com.unity.ide.vscode": "1.2.5",
- "com.unity.netcode.gameobjects": "1.0.2",
+ "com.unity.multiplayer.samples.coop": "https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop.git?path=/Packages/com.unity.multiplayer.samples.coop",
+ "com.unity.netcode.gameobjects": "1.1.0",
"com.unity.postprocessing": "3.2.2",
- "com.unity.render-pipelines.universal": "12.1.7",
+ "com.unity.render-pipelines.universal": "12.1.8",
"com.unity.test-framework": "1.1.31",
"com.unity.textmeshpro": "3.0.6",
"com.unity.timeline": "1.6.4",
diff --git a/Basic/2DSpaceShooter/Packages/packages-lock.json b/Basic/2DSpaceShooter/Packages/packages-lock.json
index 98847a903..d5cb4f279 100644
--- a/Basic/2DSpaceShooter/Packages/packages-lock.json
+++ b/Basic/2DSpaceShooter/Packages/packages-lock.json
@@ -16,7 +16,7 @@
"url": "https://packages.unity.com"
},
"com.unity.collab-proxy": {
- "version": "1.17.2",
+ "version": "1.17.7",
"depth": 0,
"source": "registry",
"dependencies": {
@@ -34,6 +34,13 @@
},
"url": "https://packages.unity.com"
},
+ "com.unity.editorcoroutines": {
+ "version": "1.0.0",
+ "depth": 2,
+ "source": "registry",
+ "dependencies": {},
+ "url": "https://packages.unity.com"
+ },
"com.unity.ext.nunit": {
"version": "1.0.6",
"depth": 1,
@@ -42,7 +49,7 @@
"url": "https://packages.unity.com"
},
"com.unity.ide.rider": {
- "version": "3.0.15",
+ "version": "3.0.16",
"depth": 0,
"source": "registry",
"dependencies": {
@@ -66,6 +73,16 @@
"dependencies": {},
"url": "https://packages.unity.com"
},
+ "com.unity.learn.iet-framework": {
+ "version": "2.2.2",
+ "depth": 1,
+ "source": "registry",
+ "dependencies": {
+ "com.unity.editorcoroutines": "1.0.0",
+ "com.unity.settings-manager": "1.0.3"
+ },
+ "url": "https://packages.unity.com"
+ },
"com.unity.mathematics": {
"version": "1.2.6",
"depth": 1,
@@ -73,13 +90,38 @@
"dependencies": {},
"url": "https://packages.unity.com"
},
+ "com.unity.multiplayer.samples.coop": {
+ "version": "https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop.git?path=/Packages/com.unity.multiplayer.samples.coop",
+ "depth": 0,
+ "source": "git",
+ "dependencies": {
+ "com.unity.learn.iet-framework": "1.2.1",
+ "com.unity.multiplayer.tools": "1.0.0",
+ "com.unity.netcode.gameobjects": "1.1.0",
+ "com.unity.services.relay": "1.0.3"
+ },
+ "hash": "782ce810febe13fc4b68235389a0f3224b2418d2"
+ },
+ "com.unity.multiplayer.tools": {
+ "version": "1.0.0",
+ "depth": 1,
+ "source": "registry",
+ "dependencies": {
+ "com.unity.profiling.core": "1.0.0-pre.1",
+ "com.unity.nuget.newtonsoft-json": "2.0.0",
+ "com.unity.nuget.mono-cecil": "1.10.1",
+ "com.unity.collections": "1.1.0",
+ "com.unity.modules.uielements": "1.0.0"
+ },
+ "url": "https://packages.unity.com"
+ },
"com.unity.netcode.gameobjects": {
- "version": "1.0.2",
+ "version": "1.1.0",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.nuget.mono-cecil": "1.10.1",
- "com.unity.transport": "1.2.0"
+ "com.unity.transport": "1.3.0"
},
"url": "https://packages.unity.com"
},
@@ -106,8 +148,15 @@
},
"url": "https://packages.unity.com"
},
+ "com.unity.profiling.core": {
+ "version": "1.0.2",
+ "depth": 2,
+ "source": "registry",
+ "dependencies": {},
+ "url": "https://packages.unity.com"
+ },
"com.unity.render-pipelines.core": {
- "version": "12.1.7",
+ "version": "12.1.8",
"depth": 1,
"source": "builtin",
"dependencies": {
@@ -117,14 +166,14 @@
}
},
"com.unity.render-pipelines.universal": {
- "version": "12.1.7",
+ "version": "12.1.8",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.mathematics": "1.2.1",
"com.unity.burst": "1.7.3",
- "com.unity.render-pipelines.core": "12.1.7",
- "com.unity.shadergraph": "12.1.7"
+ "com.unity.render-pipelines.core": "12.1.8",
+ "com.unity.shadergraph": "12.1.8"
}
},
"com.unity.searcher": {
@@ -134,8 +183,20 @@
"dependencies": {},
"url": "https://packages.unity.com"
},
+ "com.unity.services.authentication": {
+ "version": "2.3.1",
+ "depth": 2,
+ "source": "registry",
+ "dependencies": {
+ "com.unity.nuget.newtonsoft-json": "3.0.2",
+ "com.unity.services.core": "1.4.3",
+ "com.unity.modules.unitywebrequest": "1.0.0",
+ "com.unity.ugui": "1.0.0"
+ },
+ "url": "https://packages.unity.com"
+ },
"com.unity.services.core": {
- "version": "1.4.3",
+ "version": "1.6.0",
"depth": 1,
"source": "registry",
"dependencies": {
@@ -145,12 +206,50 @@
},
"url": "https://packages.unity.com"
},
+ "com.unity.services.qos": {
+ "version": "1.0.1",
+ "depth": 2,
+ "source": "registry",
+ "dependencies": {
+ "com.unity.services.core": "1.4.0",
+ "com.unity.modules.unitywebrequest": "1.0.0",
+ "com.unity.nuget.newtonsoft-json": "3.0.2",
+ "com.unity.services.authentication": "2.0.0",
+ "com.unity.collections": "1.2.3"
+ },
+ "url": "https://packages.unity.com"
+ },
+ "com.unity.services.relay": {
+ "version": "1.0.3",
+ "depth": 1,
+ "source": "registry",
+ "dependencies": {
+ "com.unity.services.core": "1.4.0",
+ "com.unity.services.authentication": "2.0.0",
+ "com.unity.services.qos": "1.0.1",
+ "com.unity.modules.unitywebrequest": "1.0.0",
+ "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
+ "com.unity.modules.unitywebrequestaudio": "1.0.0",
+ "com.unity.modules.unitywebrequesttexture": "1.0.0",
+ "com.unity.modules.unitywebrequestwww": "1.0.0",
+ "com.unity.nuget.newtonsoft-json": "3.0.2",
+ "com.unity.transport": "1.0.0"
+ },
+ "url": "https://packages.unity.com"
+ },
+ "com.unity.settings-manager": {
+ "version": "1.0.3",
+ "depth": 2,
+ "source": "registry",
+ "dependencies": {},
+ "url": "https://packages.unity.com"
+ },
"com.unity.shadergraph": {
- "version": "12.1.7",
+ "version": "12.1.8",
"depth": 1,
"source": "builtin",
"dependencies": {
- "com.unity.render-pipelines.core": "12.1.7",
+ "com.unity.render-pipelines.core": "12.1.8",
"com.unity.searcher": "4.9.1"
}
},
@@ -187,7 +286,7 @@
"url": "https://packages.unity.com"
},
"com.unity.transport": {
- "version": "1.2.0",
+ "version": "1.3.0",
"depth": 1,
"source": "registry",
"dependencies": {
diff --git a/Basic/2DSpaceShooter/ProjectSettings/ProjectVersion.txt b/Basic/2DSpaceShooter/ProjectSettings/ProjectVersion.txt
index b868996e8..eabd63377 100644
--- a/Basic/2DSpaceShooter/ProjectSettings/ProjectVersion.txt
+++ b/Basic/2DSpaceShooter/ProjectSettings/ProjectVersion.txt
@@ -1,2 +1,2 @@
-m_EditorVersion: 2021.3.12f1
-m_EditorVersionWithRevision: 2021.3.12f1 (8af3c3e441b1)
+m_EditorVersion: 2021.3.15f1
+m_EditorVersionWithRevision: 2021.3.15f1 (e8e88683f834)
diff --git a/Basic/Invaders/Assets/Readme.asset b/Basic/Invaders/Assets/Readme.asset
new file mode 100644
index 000000000..0af6ca565
--- /dev/null
+++ b/Basic/Invaders/Assets/Readme.asset
@@ -0,0 +1,39 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: a17d5446493e4284e92e20d8304a1973, type: 3}
+ m_Name: Readme
+ m_EditorClassIdentifier:
+ icon: {fileID: 2800000, guid: ccc6b3ea84f7e4550b618abc8d06dd5d, type: 3}
+ title: 'Invaders: A Bitesize Sample'
+ sections:
+ - heading: Invaders
+ text: The Invaders sample is a sample project designed to demonstrate game flow
+ and modes with Netcode for GameObjects (Netcode) using Scene Managerment, unconventional
+ networked movement, and a shared timer between clients updated client-side
+ with server-side seeding. Read more about the sample from the
+ linkText: Invaders bitesize sample documentation page.
+ url: https://docs-multiplayer.unity3d.com/netcode/current/learn/bitesize/bitesize-invaders
+ - heading:
+ text: The entry scene for this game is the InitBootStrap scene. From there a
+ game can be hosted or an existing game can be joined.
+ linkText:
+ url:
+ - heading:
+ text: 'To read more about Netcode and its built-in features, see the '
+ linkText: Netcode documentation.
+ url: https://docs-multiplayer.unity3d.com/
+ - heading:
+ text: 'For more information about this bitesize sample or our other bitesize
+ samples, see the GitHub repo Readme from the '
+ linkText: Bitesize Samples GitHub public repository.
+ url: https://github.com/Unity-Technologies/com.unity.multiplayer.samples.bitesize
+ loadedLayout: 1
diff --git a/Basic/Invaders/Assets/Readme.asset.meta b/Basic/Invaders/Assets/Readme.asset.meta
new file mode 100644
index 000000000..2965073a1
--- /dev/null
+++ b/Basic/Invaders/Assets/Readme.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: bccdc4a15f212574795db7fe9df4e1f7
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Basic/Invaders/Assets/Scripts/Readme.meta b/Basic/Invaders/Assets/Scripts/Readme.meta
new file mode 100644
index 000000000..ecb466734
--- /dev/null
+++ b/Basic/Invaders/Assets/Scripts/Readme.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 61f690c919c1f9e4cb9f276cdd357ee1
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Basic/Invaders/Assets/Scripts/Readme/Editor.meta b/Basic/Invaders/Assets/Scripts/Readme/Editor.meta
new file mode 100644
index 000000000..4f2f9a458
--- /dev/null
+++ b/Basic/Invaders/Assets/Scripts/Readme/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 191d40f82dad62c428b1c902fe819c0f
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Basic/Invaders/Assets/Scripts/Readme/Editor/ReadmeEditor.cs b/Basic/Invaders/Assets/Scripts/Readme/Editor/ReadmeEditor.cs
new file mode 100644
index 000000000..3876e7753
--- /dev/null
+++ b/Basic/Invaders/Assets/Scripts/Readme/Editor/ReadmeEditor.cs
@@ -0,0 +1,170 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.IO;
+using System.Reflection;
+
+///
+/// Custom readme editor window based on the readme created for URP. For more context, see:
+/// https://github.com/Unity-Technologies/Graphics/tree/master/com.unity.template-universal
+///
+[CustomEditor(typeof(Readme))]
+[InitializeOnLoad]
+public class ReadmeEditor : UnityEditor.Editor
+{
+ const string k_ShowedReadmeSessionStateName = "ReadmeEditor.showedReadme";
+
+ const float k_Space = 16f;
+
+ bool m_Initialized;
+
+ [SerializeField]
+ GUIStyle m_LinkStyle;
+
+ GUIStyle LinkStyle => m_LinkStyle;
+
+ [SerializeField]
+ GUIStyle m_TitleStyle;
+
+ GUIStyle TitleStyle => m_TitleStyle;
+
+ [SerializeField]
+ GUIStyle m_HeadingStyle;
+
+ GUIStyle HeadingStyle => m_HeadingStyle;
+
+ [SerializeField]
+ GUIStyle m_BodyStyle;
+
+ GUIStyle BodyStyle => m_BodyStyle;
+
+ static ReadmeEditor()
+ {
+ EditorApplication.delayCall += SelectReadmeAutomatically;
+ }
+
+ static void SelectReadmeAutomatically()
+ {
+ if (!SessionState.GetBool(k_ShowedReadmeSessionStateName, false))
+ {
+ var readme = SelectReadme();
+ SessionState.SetBool(k_ShowedReadmeSessionStateName, true);
+
+ if (readme && !readme.loadedLayout)
+ {
+ LoadLayout();
+ readme.loadedLayout = true;
+ }
+ }
+ }
+
+ static void LoadLayout()
+ {
+ var assembly = typeof(EditorApplication).Assembly;
+ var windowLayoutType = assembly.GetType("UnityEditor.WindowLayout", true);
+ var method = windowLayoutType.GetMethod("LoadWindowLayout", BindingFlags.Public | BindingFlags.Static);
+ method?.Invoke(null, new object[] { Path.Combine(Application.dataPath, "TutorialInfo/Layout.wlt"), false });
+ }
+
+ [MenuItem("Sample/Show Sample Instructions")]
+ static Readme SelectReadme()
+ {
+ var ids = AssetDatabase.FindAssets("Readme t:Readme");
+ if (ids.Length == 1)
+ {
+ var readmeObject = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(ids[0]));
+
+ Selection.objects = new UnityEngine.Object[] { readmeObject };
+
+ return (Readme)readmeObject;
+ }
+ else
+ {
+ Debug.Log("Couldn't find a readme");
+ return null;
+ }
+ }
+
+ protected override void OnHeaderGUI()
+ {
+ var readme = (Readme)target;
+ Init();
+
+ var iconWidth = Mathf.Min(EditorGUIUtility.currentViewWidth / 3f - 20f, 128f);
+
+ GUILayout.BeginHorizontal("In BigTitle");
+ {
+ GUILayout.Label(readme.icon, GUILayout.Width(iconWidth), GUILayout.Height(iconWidth));
+ GUILayout.Label(readme.title, TitleStyle);
+ }
+ GUILayout.EndHorizontal();
+ }
+
+ public override void OnInspectorGUI()
+ {
+ var readme = (Readme)target;
+ Init();
+
+ foreach (var section in readme.sections)
+ {
+ if (!string.IsNullOrEmpty(section.heading))
+ {
+ GUILayout.Label(section.heading, HeadingStyle);
+ }
+
+ if (!string.IsNullOrEmpty(section.text))
+ {
+ GUILayout.Label(section.text, BodyStyle);
+ }
+
+ if (!string.IsNullOrEmpty(section.linkText))
+ {
+ if (LinkLabel(new GUIContent(section.linkText)))
+ {
+ Application.OpenURL(section.url);
+ }
+ }
+
+ GUILayout.Space(k_Space);
+ }
+ }
+
+ void Init()
+ {
+ if (m_Initialized)
+ return;
+ m_BodyStyle = new GUIStyle(EditorStyles.label);
+ m_BodyStyle.wordWrap = true;
+ m_BodyStyle.fontSize = 14;
+
+ m_TitleStyle = new GUIStyle(m_BodyStyle);
+ m_TitleStyle.fontSize = 26;
+
+ m_HeadingStyle = new GUIStyle(m_BodyStyle);
+ m_HeadingStyle.fontSize = 18;
+
+ m_LinkStyle = new GUIStyle(m_BodyStyle);
+ m_LinkStyle.wordWrap = false;
+
+ // Match selection color which works nicely for both light and dark skins
+ m_LinkStyle.normal.textColor = new Color(0x00 / 255f, 0x78 / 255f, 0xDA / 255f, 1f);
+ m_LinkStyle.stretchWidth = false;
+
+ m_Initialized = true;
+ }
+
+ bool LinkLabel(GUIContent label, params GUILayoutOption[] options)
+ {
+ var position = GUILayoutUtility.GetRect(label, LinkStyle, options);
+
+ Handles.BeginGUI();
+ Handles.color = LinkStyle.normal.textColor;
+ Handles.DrawLine(new Vector3(position.xMin, position.yMax), new Vector3(position.xMax, position.yMax));
+ Handles.color = Color.white;
+ Handles.EndGUI();
+
+ EditorGUIUtility.AddCursorRect(position, MouseCursor.Link);
+
+ return GUI.Button(position, label, LinkStyle);
+ }
+}
diff --git a/Basic/Invaders/Assets/Scripts/Readme/Editor/ReadmeEditor.cs.meta b/Basic/Invaders/Assets/Scripts/Readme/Editor/ReadmeEditor.cs.meta
new file mode 100644
index 000000000..b6efd6d6d
--- /dev/null
+++ b/Basic/Invaders/Assets/Scripts/Readme/Editor/ReadmeEditor.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 443a5687118135d45a18a16b22fa7be3
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Basic/Invaders/Assets/Scripts/Readme/Readme.cs b/Basic/Invaders/Assets/Scripts/Readme/Readme.cs
new file mode 100644
index 000000000..b6863f0aa
--- /dev/null
+++ b/Basic/Invaders/Assets/Scripts/Readme/Readme.cs
@@ -0,0 +1,24 @@
+using System;
+using UnityEngine;
+
+///
+/// Custom readme class based on the readme created for URP. For more context, see:
+/// https://github.com/Unity-Technologies/Graphics/tree/master/com.unity.template-universal
+///
+[CreateAssetMenu]
+public class Readme : ScriptableObject
+{
+ public Texture2D icon;
+ public string title;
+ public Section[] sections;
+ public bool loadedLayout;
+
+ [Serializable]
+ public class Section
+ {
+ public string heading;
+ public string text;
+ public string linkText;
+ public string url;
+ }
+}
diff --git a/Basic/Invaders/Assets/Scripts/Readme/Readme.cs.meta b/Basic/Invaders/Assets/Scripts/Readme/Readme.cs.meta
new file mode 100644
index 000000000..ae070fe2a
--- /dev/null
+++ b/Basic/Invaders/Assets/Scripts/Readme/Readme.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a17d5446493e4284e92e20d8304a1973
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Basic/Invaders/Assets/URP/UniversalRenderPipelineAsset_Renderer.asset b/Basic/Invaders/Assets/URP/UniversalRenderPipelineAsset_Renderer.asset
index ad96a80fa..c9be5a4df 100644
--- a/Basic/Invaders/Assets/URP/UniversalRenderPipelineAsset_Renderer.asset
+++ b/Basic/Invaders/Assets/URP/UniversalRenderPipelineAsset_Renderer.asset
@@ -12,8 +12,12 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3}
m_Name: UniversalRenderPipelineAsset_Renderer
m_EditorClassIdentifier:
+ debugShaders:
+ debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7,
+ type: 3}
m_RendererFeatures: []
m_RendererFeatureMap:
+ m_UseNativeRenderPass: 0
postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2}
shaders:
blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3}
@@ -21,11 +25,17 @@ MonoBehaviour:
screenSpaceShadowPS: {fileID: 4800000, guid: 0f854b35a0cf61a429bd5dcfea30eddd,
type: 3}
samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3}
- tileDepthInfoPS: {fileID: 0}
- tileDeferredPS: {fileID: 0}
stencilDeferredPS: {fileID: 4800000, guid: e9155b26e1bc55942a41e518703fe304, type: 3}
fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3}
materialErrorPS: {fileID: 4800000, guid: 5fd9a8feb75a4b5894c241777f519d4e, type: 3}
+ coreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3}
+ coreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b,
+ type: 3}
+ cameraMotionVector: {fileID: 4800000, guid: c56b7e0d4c7cb484e959caeeedae9bbf,
+ type: 3}
+ objectMotionVector: {fileID: 4800000, guid: 7b3ede40266cd49a395def176e1bc486,
+ type: 3}
+ m_AssetVersion: 2
m_OpaqueLayerMask:
serializedVersion: 2
m_Bits: 4294967295
@@ -41,4 +51,9 @@ MonoBehaviour:
zFailOperation: 0
m_ShadowTransparentReceive: 0
m_RenderingMode: 0
+ m_DepthPrimingMode: 0
+ m_CopyDepthMode: 0
m_AccurateGbufferNormals: 0
+ m_ClusteredRendering: 0
+ m_TileSize: 32
+ m_IntermediateTextureMode: 1
diff --git a/Basic/Invaders/Packages/manifest.json b/Basic/Invaders/Packages/manifest.json
index b66713677..a3a2ab310 100644
--- a/Basic/Invaders/Packages/manifest.json
+++ b/Basic/Invaders/Packages/manifest.json
@@ -1,13 +1,13 @@
{
"dependencies": {
"com.unity.2d.sprite": "1.0.0",
- "com.unity.ide.rider": "3.0.15",
+ "com.unity.ide.rider": "3.0.16",
"com.unity.ide.visualstudio": "2.0.16",
"com.unity.ide.vscode": "1.2.5",
"com.unity.multiplayer.samples.coop": "https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop.git?path=/Packages/com.unity.multiplayer.samples.coop",
"com.unity.multiplayer.tools": "1.0.0",
"com.unity.netcode.gameobjects": "1.1.0",
- "com.unity.render-pipelines.universal": "12.1.7",
+ "com.unity.render-pipelines.universal": "12.1.8",
"com.unity.textmeshpro": "3.0.6",
"com.unity.timeline": "1.6.4",
"com.unity.ugui": "1.0.0",
diff --git a/Basic/Invaders/Packages/packages-lock.json b/Basic/Invaders/Packages/packages-lock.json
index eea0ad5cc..e5083866a 100644
--- a/Basic/Invaders/Packages/packages-lock.json
+++ b/Basic/Invaders/Packages/packages-lock.json
@@ -40,7 +40,7 @@
"url": "https://packages.unity.com"
},
"com.unity.ide.rider": {
- "version": "3.0.15",
+ "version": "3.0.16",
"depth": 0,
"source": "registry",
"dependencies": {
@@ -91,7 +91,7 @@
"com.unity.netcode.gameobjects": "1.1.0",
"com.unity.services.relay": "1.0.3"
},
- "hash": "eeaddc0c48bf6872c0b101ccfee70028dc682022"
+ "hash": "782ce810febe13fc4b68235389a0f3224b2418d2"
},
"com.unity.multiplayer.tools": {
"version": "1.0.0",
@@ -138,7 +138,7 @@
"url": "https://packages.unity.com"
},
"com.unity.render-pipelines.core": {
- "version": "12.1.7",
+ "version": "12.1.8",
"depth": 1,
"source": "builtin",
"dependencies": {
@@ -148,14 +148,14 @@
}
},
"com.unity.render-pipelines.universal": {
- "version": "12.1.7",
+ "version": "12.1.8",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.mathematics": "1.2.1",
"com.unity.burst": "1.7.3",
- "com.unity.render-pipelines.core": "12.1.7",
- "com.unity.shadergraph": "12.1.7"
+ "com.unity.render-pipelines.core": "12.1.8",
+ "com.unity.shadergraph": "12.1.8"
}
},
"com.unity.searcher": {
@@ -166,7 +166,7 @@
"url": "https://packages.unity.com"
},
"com.unity.services.authentication": {
- "version": "2.2.0",
+ "version": "2.3.1",
"depth": 2,
"source": "registry",
"dependencies": {
@@ -178,7 +178,7 @@
"url": "https://packages.unity.com"
},
"com.unity.services.core": {
- "version": "1.4.3",
+ "version": "1.6.0",
"depth": 2,
"source": "registry",
"dependencies": {
@@ -227,11 +227,11 @@
"url": "https://packages.unity.com"
},
"com.unity.shadergraph": {
- "version": "12.1.7",
+ "version": "12.1.8",
"depth": 1,
"source": "builtin",
"dependencies": {
- "com.unity.render-pipelines.core": "12.1.7",
+ "com.unity.render-pipelines.core": "12.1.8",
"com.unity.searcher": "4.9.1"
}
},
diff --git a/Basic/Invaders/ProjectSettings/ProjectSettings.asset b/Basic/Invaders/ProjectSettings/ProjectSettings.asset
index abed00a4f..99082318a 100644
--- a/Basic/Invaders/ProjectSettings/ProjectSettings.asset
+++ b/Basic/Invaders/ProjectSettings/ProjectSettings.asset
@@ -145,16 +145,18 @@ PlayerSettings:
enable360StereoCapture: 0
isWsaHolographicRemotingEnabled: 0
enableFrameTimingStats: 0
+ enableOpenGLProfilerGPURecorders: 1
useHDRDisplay: 0
D3DHDRBitDepth: 0
m_ColorGamuts: 00000000
targetPixelDensity: 30
resolutionScalingMode: 0
+ resetResolutionOnWindowResize: 0
androidSupportedAspectRatio: 1
androidMaxAspectRatio: 2.1
applicationIdentifier:
Android:
- Standalone: com.UnityTechnologies.Invaders
+ Standalone: com.Unity-Technologies.Invaders
iPhone: com.Company.ProductName
tvOS:
buildNumber:
@@ -469,6 +471,7 @@ PlayerSettings:
m_Kind: 0
m_SubKind:
m_BuildTargetBatching: []
+ m_BuildTargetShaderSettings: []
m_BuildTargetGraphicsJobs:
- m_BuildTarget: MacStandaloneSupport
m_GraphicsJobs: 0
@@ -511,6 +514,8 @@ PlayerSettings:
m_APIs: 10000000
m_Automatic: 1
m_BuildTargetVRSettings: []
+ m_DefaultShaderChunkSizeInMB: 16
+ m_DefaultShaderChunkCount: 0
openGLRequireES31: 0
openGLRequireES31AEP: 0
openGLRequireES32: 0
@@ -676,6 +681,7 @@ PlayerSettings:
switchNetworkInterfaceManagerInitializeEnabled: 1
switchPlayerConnectionEnabled: 1
switchUseNewStyleFilepaths: 0
+ switchUseLegacyFmodPriorities: 1
switchUseMicroSleepForYield: 1
switchEnableRamDiskSupport: 0
switchMicroSleepForYieldTime: 25
@@ -750,6 +756,7 @@ PlayerSettings:
ps4videoRecordingFeaturesUsed: 0
ps4contentSearchFeaturesUsed: 0
ps4CompatibilityPS5: 0
+ ps4AllowPS5Detection: 0
ps4GPU800MHz: 1
ps4attribEyeToEyeDistanceSettingVR: 0
ps4IncludedModules: []
@@ -774,6 +781,7 @@ PlayerSettings:
webGLLinkerTarget: 1
webGLThreadsSupport: 0
webGLDecompressionFallback: 0
+ webGLPowerPreference: 2
scriptingDefineSymbols: {}
additionalCompilerArguments: {}
platformArchitecture: {}
@@ -786,6 +794,7 @@ PlayerSettings:
allowUnsafeCode: 0
useDeterministicCompilation: 1
enableRoslynAnalyzers: 1
+ selectedPlatform: 0
additionalIl2CppArgs:
scriptingRuntimeVersion: 1
gcIncremental: 1
@@ -874,6 +883,7 @@ PlayerSettings:
m_VersionName:
apiCompatibilityLevel: 6
activeInputHandler: 0
+ windowsGamepadBackendHint: 0
cloudProjectId:
framebufferDepthMemorylessMode: 0
qualitySettingsNames: []
diff --git a/Basic/Invaders/ProjectSettings/ProjectVersion.txt b/Basic/Invaders/ProjectSettings/ProjectVersion.txt
index b868996e8..eabd63377 100644
--- a/Basic/Invaders/ProjectSettings/ProjectVersion.txt
+++ b/Basic/Invaders/ProjectSettings/ProjectVersion.txt
@@ -1,2 +1,2 @@
-m_EditorVersion: 2021.3.12f1
-m_EditorVersionWithRevision: 2021.3.12f1 (8af3c3e441b1)
+m_EditorVersion: 2021.3.15f1
+m_EditorVersionWithRevision: 2021.3.15f1 (e8e88683f834)
diff --git a/Basic/Invaders/ProjectSettings/QualitySettings.asset b/Basic/Invaders/ProjectSettings/QualitySettings.asset
index b3e466bf0..261c5b890 100644
--- a/Basic/Invaders/ProjectSettings/QualitySettings.asset
+++ b/Basic/Invaders/ProjectSettings/QualitySettings.asset
@@ -231,6 +231,7 @@ QualitySettings:
PSM: 3
PSP2: 3
Samsung TV: 2
+ Server: 0
Standalone: 3
Tizen: 2
WP8: 3