客户端Unity项目
一、如前面说的那样新建一个Unity项目并初始化GDNet开发环境
二、新建一个场景,并保存为“GameScene”

三、新建一个空对象(Create Empty),并改名为NetworkManager(当然,改为什么名字其实无所谓,不影响)。

加入ClientManager、SerializeAdapter、NetworkTime组件。并将ClientManager中的Protocal改为Tcp。

四、新建文件MyCommand.cs
using System;
using System.Collections.Generic;
using System.Text;
using Net.Component;
public class MyCommand : Command
{
}
注意:这个MyCommand.cs文件最好与服务器端VisualStudio项目的MyCommand.cs同名且代码一样

五、建立MyClientSceneManager.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Net.Share;
using Net.Component;
using System;
public class MyClientSceneManager : Net.Component.SceneManager
{
public override void OnOperationOther(Operation opt)
{
switch (opt.cmd)
{
case MyCommand.Attack:
{
}
break;
}
}
}

将这个文件拖放给NetworkManager

========================== 下面是Player生成与设置 ==========================
六、建立场景环境。先建立地面Floor
建立一个Plane,改名为Floor,scale改为 (10,1,10)


七、新建Capsule,改名Player,并加入 TransformComponent 组件

将TransformComponent 组件的Sync Mode设为Local,勾上Fixed Sync。

将Hierachy中的Player拖入Project窗口,做成Prefab,并将Hierachy中的Player删除

八、新建PlayerController.cs,加载到Player上,但不要启用
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
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);
}
}
}

九、建立一个空对象(Create Empty),改名为GameManager(改为什么名字无所谓,但一个好的命名对项目是有很大的好处的)

十、新建脚本GameManager.cs,加到GameManager这个对象上。并将Player的Prefab拖进来
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Net.Component;
public class GameManager : MonoBehaviour
{
public GameObject PlayerPrefab;
private void Start()
{
ClientManager.Instance.client.OnConnectedHandle += Connected;
}
private void Connected()
{
SpawnPlayer(Vector3.zero, Quaternion.identity);
}
public void SpawnPlayer(Vector3 position, Quaternion rotation)
{
NetworkTransformBase.Identity = ClientManager.UID;
GameObject _player = Instantiate(PlayerPrefab, position, rotation);
_player.GetComponent<PlayerController>().enabled = true;
}
}

十一、在NetworkManager的MyClientSceneManager的Prefabs增加一个项,将Player这个Prefab拖入。

============================== 结束 =================================
至此,第一个GDNet项目完成。先运行服务器端,然后运行客户端。
在服务端显示:

在客户端显示:

Build后,运行多个客户端登录。显示如下

最后更新于
这有帮助吗?