[Unity-3d] 联网五子棋~~

联机版五子棋


这次的作业花了我好长好长的时间…其实实现联机版的小游戏说难不难,然而我也只能说…没那么简单吧…OwO 话不多说,来看一看这次联机版五子棋的实现吧。
联机五子棋
左边为host,右边为client

1. 创建联网环境

1)NetworkManager 网络控制器设置
第一步是在项目中创建 NetworkManager 对象:从菜单 Game Object -> Create Empty 添加一个新的空游戏对象,重命名为“NetworkManager”。然后添加组件 Network -> NetworkManager,该组件管理游戏的网络状态。
Network Manager
2)设置玩家对象预制
下一步是设置代表游戏中玩家对象的 Unity Prefab。默认情况下,NetworkManager 通过克隆玩家预制来为 Client 实例化玩家对象。在五子棋游戏中,玩家对象是一个空对象,因为玩家只需要通过点击鼠标下棋,并不需要操作游戏对象。将空对象重命名为Player,添加组件 Network -> NetworkIdentity 到对象,该组件用于标识服务器和客户端之间的对象。

接下来,将 NetworkIdentity 上的 “Local Player Authority” 复选框设置为 true。这将允许客户端(本地玩家)拥有一定的权限,控制游戏对象。

将Player拖放到资源窗口中制作预制件。创建一个名为 “Player” 的预制件。从场景中删除 Player对象,因为我们只需要预制。

3)注册玩家预制
一旦玩家预制被创建,它就必须在网络系统上注册。
在层次视图中找到 NetworkManager 对象并选择它在 NetworkManager 组件面板打开 “Spawn Info” 折叠找到 “Player Prefab” 插槽(可以拖入对象的属性)将 PlayerCube 预制件拖入 “Player Prefab” 插槽。

2.实现游戏五子棋

1) 新建棋盘
从菜单 3D Object -> Plane 创建一个平面,添加material,调整位置和角度(竖立以便下棋),作为棋盘。在Plane下新建4个Sphere对象LeftTop/RightTop/LeftButton/RightButton,分别放置在棋盘的四个网格顶点,这是为了在之后方便计算棋子的落子点位置。
这里写图片描述
2) 创建五子棋脚本chess.cs
因为实际上五子棋的实现比较简单,因此这一次没有使用架构,只用了一个脚本实现,以下说一说各部分函数的作用。

首先是变量说明,主要是分为两部分,一部分是关于位置描述的变量,另一部分是关于游戏状态记录的变量。

    //-----------Part 1 对象&位置相关------------------------ 

    //四个锚点位置,用于计算棋子落点
    public GameObject LeftTop;
    public GameObject RightTop;
    public GameObject LeftBottom;
    public GameObject RightBottom;

    //主摄像机
    public Camera cam;

    //锚点在屏幕上的映射位置
    public Vector3 LTPos;
    public Vector3 RTPos;
    public Vector3 LBPos;
    public Vector3 RBPos;

    Vector3 PointPos;           //当前点选的位置
    float gridWidth = 1;        //棋盘网格宽度
    float gridHeight = 1;       //棋盘网格高度
    float minGridDis;           //网格宽和高中较小的一个


    //-----------Part 2 游戏状态相关------------------------ 

    // 记录棋子状态
    public SyncListInt cs = new SyncListInt();

    // 同步记录游戏状态
    [SyncVar]
    public int winner = 0;             //获胜方,1为黑子,-1为白子
    [SyncVar]
    public bool isPlaying = true;      //是否处于对弈状态

    enum turn { black, white };
    [SyncVar]
    turn chessTurn;             //落子顺序(需要同步)

    [SyncVar]
    public bool isRestart;      //重新开始信号(需要同步)

    Vector2[,] chessPos;        //存储棋盘上所有可
  • 2
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Vue-Unity-WebGL 是一个具有极高可扩展性和灵活性的 Unity3D web 端开发框架,它将 Vue.js 与 Unity Web Player 和 WebGL 等技术相结合,为开发者提供了最佳的解决方案。 Vue-Unity-WebGL 框架具有很高的兼容性和易用性,开发者可以更加灵活地应用该框架来定制自己的项目。由于该框架具备了许多优秀的特性,如自适应布局、多平台支持等,使得开发者可以轻松地实现用户体验和开发效率的提升。此外,Vue-Unity-WebGL 框架不仅提供了可视化开发工具,还提供了完整的运行环境,为开发者提供了优秀的开发体验。 Vue-Unity-WebGL 框架的另一个重要特点是其大量的插件与扩展功能,这些插件和扩展可以为项目的开发和管理提供坚强的技术支持。比如,通过 vue-router 可以控制路由,Vue-Unity-WebGL 可以协作处理组件数据和 Unity3D 渲染等复杂的操作,而 Vuex 则可以使开发者方便地处理应用数据流和组件状态的管理。这些插件和扩展功能极大地提高了 Vue-Unity-WebGL 框架的可扩展性和灵活性,使得开发者可以更加容易地进行定制。 综上所述,Vue-Unity-WebGL 框架是一个快速、可靠且强大的解决方案,这使得开发者能够轻松地编写出高质量的 Unity3D web 应用程序。该框架具有大量的功能,实现可扩展性、灵活性、易用性和可维护性,比其他框架更具有竞争力。在未来的发展中,Vue-Unity-WebGL 框架将会被更多的开发者喜爱和应用,并在技术社区中拥有更广泛的影响力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值