feat: add core quiz game logic, scoreboard, team machine, player management, and debug view with supporting assets and scene.
This commit is contained in:
@@ -43,7 +43,7 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 4
|
||||
Data: 5
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data:
|
||||
@@ -272,6 +272,66 @@ MonoBehaviour:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: scoreboardManager
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 16|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: scoreboardManager
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 7
|
||||
Data: 17|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: ScoreboardManager, Assembly-CSharp
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 7
|
||||
Data: 18|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: VRC.Udon.UdonBehaviour, VRC.Udon
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
- Name:
|
||||
Entry: 6
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <IsSerialized>k__BackingField
|
||||
Entry: 5
|
||||
Data: true
|
||||
- Name: _fieldAttributes
|
||||
Entry: 7
|
||||
Data: 19|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 0
|
||||
- Name:
|
||||
Entry: 13
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 13
|
||||
Data:
|
||||
|
||||
@@ -10,6 +10,7 @@ public class PlayerManager : UdonSharpBehaviour
|
||||
[UdonSynced] private int[] playerScores = new int[0];
|
||||
[UdonSynced] private string[] playerTeams = new string[0];
|
||||
[UdonSynced] public int[] currentPlayerIds = new int[0];
|
||||
public ScoreboardManager scoreboardManager;
|
||||
|
||||
public override void OnPlayerJoined(VRCPlayerApi player)
|
||||
{
|
||||
@@ -43,6 +44,7 @@ public class PlayerManager : UdonSharpBehaviour
|
||||
newCurrentIds[currentPlayerIds.Length] = id;
|
||||
currentPlayerIds = newCurrentIds;
|
||||
|
||||
UpdateScoreboards();
|
||||
RequestSerialization();
|
||||
}
|
||||
|
||||
@@ -63,6 +65,7 @@ public class PlayerManager : UdonSharpBehaviour
|
||||
}
|
||||
currentPlayerIds = newCurrentIds;
|
||||
|
||||
UpdateScoreboards();
|
||||
RequestSerialization();
|
||||
}
|
||||
|
||||
@@ -78,6 +81,7 @@ public class PlayerManager : UdonSharpBehaviour
|
||||
break;
|
||||
}
|
||||
}
|
||||
UpdateScoreboards();
|
||||
RequestSerialization();
|
||||
}
|
||||
|
||||
@@ -105,6 +109,7 @@ public class PlayerManager : UdonSharpBehaviour
|
||||
break;
|
||||
}
|
||||
}
|
||||
UpdateScoreboards();
|
||||
RequestSerialization();
|
||||
}
|
||||
|
||||
@@ -129,6 +134,7 @@ public class PlayerManager : UdonSharpBehaviour
|
||||
if (index >= 0)
|
||||
{
|
||||
playerTeams[index] = team;
|
||||
UpdateScoreboards();
|
||||
RequestSerialization();
|
||||
}
|
||||
}
|
||||
@@ -168,4 +174,17 @@ public class PlayerManager : UdonSharpBehaviour
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public override void OnDeserialization()
|
||||
{
|
||||
UpdateScoreboards();
|
||||
}
|
||||
|
||||
private void UpdateScoreboards()
|
||||
{
|
||||
if (scoreboardManager != null)
|
||||
{
|
||||
scoreboardManager.UpdateAllScoreboards();
|
||||
}
|
||||
}
|
||||
}
|
||||
112
Assets/Quiz/Scripts/Managers/ScoreboardManager.asset
Normal file
112
Assets/Quiz/Scripts/Managers/ScoreboardManager.asset
Normal file
@@ -0,0 +1,112 @@
|
||||
%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: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3}
|
||||
m_Name: ScoreboardManager
|
||||
m_EditorClassIdentifier:
|
||||
serializedUdonProgramAsset: {fileID: 11400000, guid: 75e5332ec9febb24981d675f00a8366d, type: 2}
|
||||
udonAssembly:
|
||||
assemblyError:
|
||||
sourceCsScript: {fileID: 11500000, guid: 10e4adff73116c94db61e87f95faf2df, type: 3}
|
||||
scriptVersion: 2
|
||||
compiledVersion: 2
|
||||
behaviourSyncMode: 0
|
||||
hasInteractEvent: 0
|
||||
scriptID: -6410926265346213935
|
||||
serializationData:
|
||||
SerializedFormat: 2
|
||||
SerializedBytes:
|
||||
ReferencedUnityObjects: []
|
||||
SerializedBytesString:
|
||||
Prefab: {fileID: 0}
|
||||
PrefabModificationsReferencedUnityObjects: []
|
||||
PrefabModifications: []
|
||||
SerializationNodes:
|
||||
- Name: fieldDefinitions
|
||||
Entry: 7
|
||||
Data: 0|System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[UdonSharp.Compiler.FieldDefinition,
|
||||
UdonSharp.Editor]], mscorlib
|
||||
- Name: comparer
|
||||
Entry: 7
|
||||
Data: 1|System.Collections.Generic.GenericEqualityComparer`1[[System.String,
|
||||
mscorlib]], mscorlib
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 1
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: scoreboards
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 2|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: scoreboards
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 7
|
||||
Data: 3|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: Scoreboard[], Assembly-CSharp
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 7
|
||||
Data: 4|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: UnityEngine.Component[], UnityEngine.CoreModule
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
- Name:
|
||||
Entry: 6
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <IsSerialized>k__BackingField
|
||||
Entry: 5
|
||||
Data: true
|
||||
- Name: _fieldAttributes
|
||||
Entry: 7
|
||||
Data: 5|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 0
|
||||
- Name:
|
||||
Entry: 13
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 13
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5c0755a6f8dcdad44be6fcd9caf44379
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
22
Assets/Quiz/Scripts/Managers/ScoreboardManager.cs
Normal file
22
Assets/Quiz/Scripts/Managers/ScoreboardManager.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using UdonSharp;
|
||||
using UnityEngine;
|
||||
using VRC.SDKBase;
|
||||
using VRC.Udon;
|
||||
|
||||
public class ScoreboardManager : UdonSharpBehaviour
|
||||
{
|
||||
public Scoreboard[] scoreboards;
|
||||
|
||||
public void UpdateAllScoreboards()
|
||||
{
|
||||
if (scoreboards == null) return;
|
||||
|
||||
foreach (Scoreboard board in scoreboards)
|
||||
{
|
||||
if (board != null)
|
||||
{
|
||||
board.UpdateScoreboard();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
11
Assets/Quiz/Scripts/Managers/ScoreboardManager.cs.meta
Normal file
11
Assets/Quiz/Scripts/Managers/ScoreboardManager.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 10e4adff73116c94db61e87f95faf2df
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user