Unity的FishNet相关知识

FishNet和常规网络手游不太一样,他是可以将客户端和服务器写成一套代码的,也就是客户端也可以作为服务器
C#特性:
[ServerRpc] 方法添加了这个特性后,这个方法只会在服务端执行,由客户端调用,但是客户端不会执行这个方法
[ObserversRpc] 添加了这个特性的方法,只会在客户端运行,并且由服务端调用,服务端调用后,所有客户端都会被执行
[TargetRpc] 添加了这个特性后,只会在客户端运行,由服务器调用,并且需要指定一个NetworkConnection,只会给这个connection调用
我们平时开发有2种办法实现FishNet:
1.所有代码集成在一个项目中,服务器和客户端逻辑写在一起
2.服务器和客户端分成2个项目,分别处理逻辑
分成2个项目的时候需要注意踩坑点:
1.NetworkBehavior对象必须客户端和服务器同时有,并且类名完全一样。比如一个Player上有PlayerHealth脚本,那么客户端和服务器都得挂上这个脚本,并且名字不能改,否则会报错提示协议错误
其他的踩坑点:
1.Player上有Camera,那么客户端只有isOwner为true的情况才开启这个Camera,并且其他玩家Camera必须默认隐藏,不然会导致客户端的视角错乱,因为会有很多相机存在场景里unity不知道是哪个!
2.NetworkTransform如果勾选了Client Authoritative,那么只会由客户端控制Transform,服务器自己拖动坐标是没有用的,如果没有勾选,那么就是由服务器控制Transform

### 关于FishNet插件的使用和文档 FishNet 是一款用于 Unity 的高级网络框架,旨在简化多人游戏开发中的复杂性[^1]。它提供了高效的同步机制以及优化的数据传输方式,适用于多种类型的在线游戏场景。 以下是有关 FishNet 插件的一些核心功能及其用法: #### 1. **项目概述** FishNet 提供了一种现代化的方法来实现 Unity 中的游戏联网逻辑。相比其他框架(如 Mirror 或 Netcode for GameObjects),FishNet 更加注重性能优化和易用性[^2]。其主要特点包括: - 支持客户端预测 (Client-Side Prediction) 和服务器验证 (Server Reconciliation)。 - 高效的对象管理与数据压缩技术。 - 易于扩展的 API 设计。 #### 2. **安装方法** 要开始使用 FishNet,可以通过以下两种方式进行安装: - 下载官方发布的最新版本并导入至您的 Unity 工程中。 - 使用 GitCode 地址克隆仓库到本地环境:`https://gitcode.com/gh_mirrors/fi/FishNet` #### 3. **基本概念** 在 FishNet 架构下,开发者可以利用 `NetworkObject` 类型定义可被远程控制的游戏实体。这些对象通过特定的行为脚本绑定到玩家实例上完成交互操作。 #### 4. **示例代码** 下面展示如何初始化一个简单的房间系统,并注册预制体进入对象池以便重复利用资源[^3]: ```csharp using UnityEngine; using FishNet.Object; public class RoomManager : MonoBehaviour { public GameObject playerPrefab; // 定义玩家模型作为预制物 private void Start() { if (!IsServer) return; InitializePlayerPool(playerPrefab, 10); } /// <summary> /// 初始化对象池 /// </summary> internal static void InitializePlayerPool(GameObject poolPrefab, int count) { NetworkObject networkObject = poolPrefab.GetComponent<NetworkObject>(); if(networkObject != null){ networkObject.SpawnMode = SpawnMode.Pool; ObjectPooler.Instance.Initialize(poolPrefab, count); } } } ``` 此段程序展示了如何设置基于对象池机制的玩家生成器,从而减少运行期间内存分配频率提升整体表现效果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值