Skip to content

Commit 2dbe6ef

Browse files
Feat: Player Colors (#75)
* Added different color options to the character shader * Refactored the character shader, exposed player colors to the material inspector * More refactoring/cleaning of player color shader * Edited player materials to work with shader refactor * Another refactor of the color shader * Added color switching script * Added the color changing script to the networked character's mesh * Update Basic/ClientDriven/Assets/Scripts/ClientPlayerColor.cs Co-authored-by: Sam Bellomo <[email protected]> Co-authored-by: Sam Bellomo <[email protected]>
1 parent ec1eddd commit 2dbe6ef

16 files changed

+9853
-23
lines changed

Basic/ClientDriven/Assets/Prefabs/PlayerArmature_Networked.prefab

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,23 @@ Transform:
291291
m_CorrespondingSourceObject: {fileID: 8338988566280778637, guid: 64dce48905ffd9b4293e595fa6941544, type: 3}
292292
m_PrefabInstance: {fileID: 3616664937583670245}
293293
m_PrefabAsset: {fileID: 0}
294+
--- !u!1 &4877212143847805304 stripped
295+
GameObject:
296+
m_CorrespondingSourceObject: {fileID: 8187455079231382173, guid: 64dce48905ffd9b4293e595fa6941544, type: 3}
297+
m_PrefabInstance: {fileID: 3616664937583670245}
298+
m_PrefabAsset: {fileID: 0}
299+
--- !u!114 &3615669438616969171
300+
MonoBehaviour:
301+
m_ObjectHideFlags: 0
302+
m_CorrespondingSourceObject: {fileID: 0}
303+
m_PrefabInstance: {fileID: 0}
304+
m_PrefabAsset: {fileID: 0}
305+
m_GameObject: {fileID: 4877212143847805304}
306+
m_Enabled: 1
307+
m_EditorHideFlags: 0
308+
m_Script: {fileID: 11500000, guid: 0bcad93ad8ac5d4449dd8f76d5db9990, type: 3}
309+
m_Name:
310+
m_EditorClassIdentifier:
294311
--- !u!95 &5969265393934875124 stripped
295312
Animator:
296313
m_CorrespondingSourceObject: {fileID: 6982812146204527121, guid: 64dce48905ffd9b4293e595fa6941544, type: 3}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using Unity.Netcode;
2+
using UnityEngine;
3+
4+
/// <summary>
5+
/// A script to set the color of each player based on OwnerClientId
6+
/// </summary>
7+
8+
public class ClientPlayerColor : NetworkBehaviour
9+
{
10+
public override void OnNetworkSpawn()
11+
{
12+
base.OnNetworkSpawn();
13+
SkinnedMeshRenderer m_Renderer = GetComponent<SkinnedMeshRenderer>();
14+
15+
foreach (var material in m_Renderer.materials)
16+
{
17+
// OwnerClientId is used here for debugging purposes. A live game should use a session manager to make sure reconnecting players still get the same color, as client IDs could be reused for other clients between disconnect and reconnect. See Boss Room for a session manager example.
18+
material.SetFloat("_Color_Index", OwnerClientId);
19+
}
20+
21+
}
22+
}

Basic/ClientDriven/Assets/Scripts/ClientPlayerColor.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)