一、加入一个Cube,改名Player2,作为第二种模型。与Player一样,也要加入TransformComponent.cs和PlayerController.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Net.Component;
using Net.Share;
public class PlayerController : MonoBehaviour
{
public float speed = 8f;
private void Update()
{
if (Input.GetKey(KeyCode.LeftArrow))
{
transform.Translate(Vector3.left * speed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.RightArrow))
{
transform.Translate(Vector3.right * speed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.UpArrow))
{
transform.Translate(Vector3.forward * speed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.DownArrow))
{
transform.Translate(Vector3.back * speed * Time.deltaTime);
}
//发送改变Player颜色指令
if (Input.GetKeyDown(KeyCode.C))
{
var _index = GetComponent<TransformComponent>().identity;
ClientManager.AddOperation(new Operation(MyCommand.ChangePlayerColor, _index)
{
buffer = new byte[]
{
(byte)Random.Range(0,255), //R
(byte)Random.Range(0,255), //G
(byte)Random.Range(0,255) //B
}
});
}
// 按B键改变Player模型
if (Input.GetKeyDown(KeyCode.B))
{
GameObject.Find("GameManager").GetComponent<GameManager>().SpawnPlayer(1, transform.position, transform.rotation);
Destroy(gameObject);
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Net.Component;
public class GameManager : MonoBehaviour
{
public List<GameObject> PlayerPrefabs;
private void Start()
{
ClientManager.Instance.client.OnConnectedHandle += Connected;
}
private void Connected()
{
SpawnPlayer(0, Vector3.zero, Quaternion.identity);
}
public void SpawnPlayer(int _modelIndex, Vector3 position, Quaternion rotation)
{
NetworkTransformBase.Identity = ClientManager.UID;
GameObject _player = Instantiate(PlayerPrefabs[_modelIndex], position, rotation);
_player.GetComponent<PlayerController>().enabled = true;
}
}