zoukankan      html  css  js  c++  java
  • unity5.1 Unet基础

          Unity5.1为开发者发布全新的多玩家在线工具、技术和服务。该技术的内部项目名称为 UNET,全称为 Unity Networking。我近期的工作便是研究并使用unet,将自己的研究结果在这里记录一下,如有纰漏,请大家多多指正。我主要记述的不是很具体的用法而是一些我遇到的问题,用法在网上也能查到很多。

      Unet针对不同用户的使用有高级和低级API两种--用Unity制作多玩家游戏的用户,这类用户应该从NetworkManager或者高级API开始。
    搭建网络架构或制作高级的多玩家游戏的用户,这类用户应该从网络传输层低级API开始。

      下面从高级API(HLAPI)开始介绍,使用高级API可以实现:

      - 通过Network Manager控制游戏的网络状态
      - 操作客户端主持的游戏,主持游戏的客户端同时也是一个玩家
      - 使用一个通用的序列化器序列化数据
      - 发送和接收网络消息
      - 从客户端向服务器发送网络命令
      - 在服务器上远程调用客户端提供的过程(RPC)
      - 从服务器向客户端发送网络事件

      关于Unet的介绍网上有很多,大家可以自行查找。

      首先,Unet提供了网络连接以及管理的组件:

      网络管理器(NetworkManager)可以作为控制多人游戏的核心组件。在场景中创建一个空的游戏对象或挑选一个方便管理器对象。从Network/NetworkManager菜单项里选择添加NetworkManager组件。新添加的NetworkManager应如图所示:


    在编辑器中的NetworkManager的的inspector 面板上,有允许您配置和控制与网络相关的很多东西。

      NetworkManagerHUD 是与NetworkManager相关的的另一个组件。游戏运行控制网络状态时,它给你一个简单的用户界面。用来调试或者实验都可以,但不能用作游戏最终的 ui 设计。NetworkManagerHUD 看起来像:


    真正的游戏用户需要自己设置正确的UI ,用于控制游戏状态和允许玩家选择什么样的游戏 。用户设置自己的UI时,脚本需要继承NetworkManager,使用里面的StartHost(),StartClient()来开启伺服器和客户端。并且可以重写方法来检测连接或者实现相应功能,eg:OnClientConnect,OnStartHost等。

      之后便可以使用一系列组件实现自己想要的功能了:

      

    unity自带的组件有上述这些,根据名字也可以大致推测出可以实现什么功能,下面简要介绍一下:

    --Animator:动画同步

    --Identity:网络标识组件(带有Identity的物体只有网络开启后才会显示出来)

    --LobbyManager:游戏大厅

    --LobbyPlayer:玩家控制

    --Manager:网络管理器

    --ManagerHUD:默认UI

    --StartPosition:游戏开始玩家所处的位置

    --Tranform:物体位移等的同步控制(挂载在需要同步物体的最小父物体上即可)

     这一章到这里,下一章我主要记述我所遇到的问题。

  • 相关阅读:
    LeetCode 1110. Delete Nodes And Return Forest
    LeetCode 473. Matchsticks to Square
    LeetCode 886. Possible Bipartition
    LeetCode 737. Sentence Similarity II
    LeetCode 734. Sentence Similarity
    LeetCode 491. Increasing Subsequences
    LeetCode 1020. Number of Enclaves
    LeetCode 531. Lonely Pixel I
    LeetCode 1091. Shortest Path in Binary Matrix
    LeetCode 590. N-ary Tree Postorder Traversal
  • 原文地址:https://www.cnblogs.com/xianunity/p/5643469.html
Copyright © 2011-2022 走看看