• Multiplayer Game 中所有 player 都有一个唯一标识。在unet中可以通过 Network Identity 组件获取到该 player 在整个网络整的 唯一 的连接 id
  • 这里测试则随便加了一个前缀(Player_)+id 作为唯一的 name 赋值给 transform.name,然后可以在 Runtime 时 Hierarchy 中可以观察到

1. 整体思路:

  1. OnStartLocalPlayer 时,本机通过 Network Identity 组件的 id 生产唯一 name,设置的 transform.name 并 send 到服务端同步给其他客户端
  2. 本机生成的其他玩家则在 Start 时通过服务端同步过来的name 设置为该玩家的 name

2. 代码:

using UnityEngine;
using System.Collections;
using UnityEngine.Networking; public class Player_Id : NetworkBehaviour
{
[SyncVar]
private string playerUniqueIdentity;
private NetworkInstanceId playerNetId;
private Transform myTransform; public override void OnStartLocalPlayer()
{
GetNetIdentity();
SetIdentity();
} public void Start()
{
if (myTransform.name == "" || myTransform.name == "Player(Clone)")
{
SetIdentity(); //这里设置唯一name的是本机客户端中的其他玩家,本机玩家已经在OnStartLocalPlayer设置好了
}
} public void Awake()
{
myTransform = transform;
} /// <summary>
/// 获取唯一id,生产一个唯一的name,并告诉服务端,同步到其他客户端
/// </summary>
void GetNetIdentity()
{
playerNetId = GetComponent<NetworkIdentity>().netId;
CmdTellServerMyIdentity(MakeUniqueIdentiy());
} /// <summary>
/// 如果是其他玩家,则从网络中同步唯一name
/// 如果是本机玩家,则直接自己生成唯一name
/// </summary>
void SetIdentity()
{
if (!isLocalPlayer)
{
myTransform.name = playerUniqueIdentity;
}
else
{
myTransform.name = MakeUniqueIdentiy();
}
} string MakeUniqueIdentiy()
{
string uniqueName = "Player_" + playerNetId.ToString();
return uniqueName;
} [Command]
void CmdTellServerMyIdentity(string name)
{
playerUniqueIdentity = name;
}
}

3. 测试

我个人感觉这个代码有问题,首先作为客户端没有将ID传给服务端,导致服务端现实的ID都为同一ID,过一阵放上自己的代码

unity-unet-同步各个player唯一标识的更多相关文章

  1. iOS开发简记(5):设备唯一标识与全局变量

    这里记录两个iOS开发中经常用到的知识点,一个是唯一标识,一个是全局变量. (1)唯一标识 唯一标识一台设备(比如iPhone.iPad等)是一个基本的实现与业务上的需求,因为这个唯一标识在许多场景都 ...

  2. iOS开发(5):设备唯一标识与全局变量

    这里记录两个iOS开发中经常用到的知识点,一个是唯一标识,一个是全局变量. (1)唯一标识 唯一标识一台设备(比如iPhone.iPad等)是一个基本的实现与业务上的需求,因为这个唯一标识在许多场景都 ...

  3. 实现一个简易的Unity网络同步引擎——netgo

    实现一个简易的Unity网络同步引擎Netgo 目前GOLANG有大行其道的趋势,尤其是在网络编程方面.因为和c/c++比较起来,虽然GC占用了一部分机器性能,但是出错概率小了,开发效率大大提升,而且 ...

  4. iOS获取设备唯一标识的8种方法

    8种iOS获取设备唯一标识的方法,希望对大家有用. UDID UDID(Unique Device Identifier),iOS 设备的唯一识别码,是一个40位十六进制序列(越狱的设备通过某些工具可 ...

  5. Android 手机上获取物理唯一标识码[转]

    所有添加有谷歌账户的设备可以返回一个 ANDROID_ID 所有的CDMA设备对于 ANDROID_ID 和 TelephonyManager.getDeviceId() 返回相同的值(只要在设置时添 ...

  6. 获取设备唯一标识 uuid(采用第三方库SSKeychain)

    SSKeyChain 下载链接: http://pan.baidu.com/s/1booV3VD 密码: ivdi /** *  获取设备唯一标识 uuid */ +(NSString*) uuid ...

  7. 用ThreadLocal为线程生成唯一标识及实现原理

    1.在多线程编程中,有时候需要自动为每个启动的线程生成一个唯一标识,这个时候,通过一个ThreadLocal变量来保存每个线程的标识是最有效.最方便的方式了. 2.ThreadLocal 实例通常是类 ...

  8. sqlserver 中的GUID 全局唯一标识 -摘自网络

    --简单实用全局唯一标识 DECLARE @myid uniqueidentifierSET @myid = NEWID()PRINT 'Value of @myid is: '+ CONVERT(v ...

  9. ios开发——实用技术篇OC篇&获取设备唯一标识

    获取设备唯一标识 WWDC 2013已经闭幕,IOS7 Beta随即发布,界面之难看无以言表...,简直就是山寨Android. 更让IOS程序猿悲催的是,设备唯一标识的MAC Address在IOS ...

随机推荐

  1. failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found

    failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found 一.总结 一句话总结:这里出现的问题是我在博客园删除了一篇文章,时 ...

  2. 25.内置API

    转自:https://www.cnblogs.com/best/tag/Angular/ 3.1.数据转换 示例: 默认情况JavaScript中对象是传引用的: var tom={name:&quo ...

  3. 关于checkbox的一些jquery操作

    表单在前端开发中是经常会遇到的,其中自然也少不了checkbox复选框,对于复选框的操作无外乎有以下三种:全选,全不选,反选.下面零度逍遥就给大家分析分析. 一.checkbox全选 大家都知道选择c ...

  4. HDU 5358 First One 数学+尺取法

    多校的题,摆明了数学题,但是没想出来,蠢爆了,之前算了半天的s[i][j]的和,其实是积.其实比赛的时候我连log(s[i][j])+1是s[i][j]的位数都没看出来,说出来都丢人. 知道了这个之后 ...

  5. OPENCV(2) —— Basic Structures(一)

    DataType A primitive OpenCV data type is one of unsigned char, bool,signed char, unsigned short, sig ...

  6. Flex之文件目录浏览器实例

    Flex之文件目录浏览器实例 Flex的AIR项目 <?xml version="1.0" encoding="utf-8"?> <mx:Wi ...

  7. 重新安装python2.6 和 yum (不可以直接安装yum yum 依赖于python2.6)

    (升级或卸载Python导致 yum出错) 一: 升级python导致yum出错 1. cd  /usr/bin/yum 2.  #!/usr/bin/python 修改为    #!/usr/bin ...

  8. 局域网内机器不能对ping问题

    局域网内有台A机器能ping同其他机器,但其他机器不能ping A机器.属于同一个网段 解决办法: cmd->msconfig->常规->诊断启动,仅加载基本设备和服务. 重启后试下 ...

  9. Vijos——T1406 拉力赛

    https://vijos.org/p/1460 描述 车展结束后,游乐园决定举办一次盛大的山道拉力赛,平平和韵韵自然也要来参加大赛. 赛场上共有n个连通的计时点,n-1条赛道(构成了一棵树).每个计 ...

  10. 洛谷 P1900 自我数

    P1900 自我数 题目描述 在1949年印度数学家D. R. Daprekar发现了一类称作Self-Numbers的数.对于每一个正整数n,我们定义d(n)为n加上它每一位数字的和.例如,d(75 ...