62 lines
1.7 KiB
C#
62 lines
1.7 KiB
C#
using UnityEngine;
|
|
using Mirror;
|
|
|
|
namespace Mirror.Examples.CharacterSelection
|
|
{
|
|
public class CharacterSelection : NetworkBehaviour
|
|
{
|
|
public Transform floatingInfo;
|
|
|
|
[SyncVar]
|
|
public int characterNumber = 0;
|
|
|
|
public TextMesh textMeshName;
|
|
[SyncVar(hook = nameof(HookSetName))]
|
|
public string playerName = "";
|
|
|
|
void HookSetName(string _old, string _new)
|
|
{
|
|
//Debug.Log("HookSetName");
|
|
AssignName();
|
|
}
|
|
|
|
[SyncVar(hook = nameof(HookSetColor))]
|
|
public Color characterColour;
|
|
private Material cachedMaterial;
|
|
public MeshRenderer[] characterRenderers;
|
|
|
|
void HookSetColor(Color _old, Color _new)
|
|
{
|
|
//Debug.Log("HookSetColor");
|
|
AssignColours();
|
|
}
|
|
|
|
public void AssignColours()
|
|
{
|
|
foreach (MeshRenderer meshRenderer in characterRenderers)
|
|
{
|
|
cachedMaterial = meshRenderer.material;
|
|
cachedMaterial.color = characterColour;
|
|
}
|
|
}
|
|
|
|
void OnDestroy()
|
|
{
|
|
if (cachedMaterial) { Destroy(cachedMaterial); }
|
|
}
|
|
|
|
public void AssignName()
|
|
{
|
|
textMeshName.text = playerName;
|
|
}
|
|
|
|
// To change server controlled sync vars, clients end Commands, and the hooks will fire
|
|
// Although not used in this example, we could change some character aspects without replacing current prefab.
|
|
//[Command]
|
|
//public void CmdSetupCharacter(string _playerName, Color _characterColour)
|
|
//{
|
|
// playerName = _playerName;
|
|
// characterColour = _characterColour;
|
|
//}
|
|
}
|
|
} |