unity-unet-动态spawn player
来源:互联网 发布:淘宝网商城女装针织衫 编辑:程序博客网 时间:2024/05/21 09:12
连接服务器成功时,会在客户端生产一个player,这个player 的 prefab 可以在 Network Manager 中指定,如果不去重写一些方法的话,所有 player 生成的都是同一个 prefab 资源。
继承 Network Manager 重写 OnServerAddPlayer 方法,要自定义的prefab 一定要丢进注册列表中,也就是这个
代码中是丢在这个容器中
[SerializeField] List<GameObject> m_SpawnPrefabs = new List<GameObject>();
但使用时是用public List<GameObject> spawnPrefabs { get { return m_SpawnPrefabs; }}
/// <summary> /// 重写实例化对象,使用自定义的prefab,这个prefab必须在spawnPrefabs列表中 /// </summary> /// <param name="conn"></param> /// <param name="playerControllerId"></param> public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId) { GameObject go = null; if (spawnPrefabs.Count > 0) go = spawnPrefabs[spawnPrefabs.Count - 1]; else go = playerPrefab; var player = (GameObject)GameObject.Instantiate(go, GetStartPos().position, Quaternion.identity); NetworkServer.AddPlayerForConnection(conn, player, playerControllerId); }
源码
void OnServerAddPlayerInternal(NetworkConnection conn, short playerControllerId) { if (m_PlayerPrefab == null) { if (LogFilter.logError) { Debug.LogError("The PlayerPrefab is empty on the NetworkManager. Please setup a PlayerPrefab object."); } return; } if (m_PlayerPrefab.GetComponent<NetworkIdentity>() == null) { if (LogFilter.logError) { Debug.LogError("The PlayerPrefab does not have a NetworkIdentity. Please add a NetworkIdentity to the player prefab."); } return; } if (playerControllerId < conn.playerControllers.Count && conn.playerControllers[playerControllerId].IsValid && conn.playerControllers[playerControllerId].gameObject != null) { if (LogFilter.logError) { Debug.LogError("There is already a player at that playerControllerId for this connections."); } return; } GameObject player; Transform startPos = GetStartPosition(); if (startPos != null) { player = (GameObject)Instantiate(m_PlayerPrefab, startPos.position, startPos.rotation); } else { player = (GameObject)Instantiate(m_PlayerPrefab, Vector3.zero, Quaternion.identity); } NetworkServer.AddPlayerForConnection(conn, player, playerControllerId); }
0 0
- unity-unet-动态spawn player
- unity-unet-同步各个player唯一标识
- unity-unet-设置player的开始位置
- Unity UNet 常见问题整理
- 【Unet】Unet 产生不同玩家( Spawning different player prefabs)
- 【Unet】unet spwan动态生成 物体
- 【Unet】Unet动态添加多个主角
- Unity的 UNet组件介绍
- Unity Unet组件、方法探索
- 【Unet】Unet Failed to spawn server object, assetId=0000000000000e2656f netId=2 问题
- Unity UNet Lobby 的一些测试信息
- unity Unet 开发记录(一)
- unity之使用unet创建局域网游戏
- unity playmaker player
- Unity摄像机跟随Player
- spawn
- unity VR Unet 多人互联的实现 以及unet组件的的坑
- unity-使用unet做多人在线fps或tps
- poj1860 currency exchange(1)
- 今天复习到滚动特性,没想到,这么高大上,<marquee>,其实就是滚动条
- linux shell(leetcode)
- python学习之 beautifulsoup选择器
- Widget的点击事件
- unity-unet-动态spawn player
- LCIS
- Java与模式之建造者模式详解
- Android逆向初步
- Struts的Action接口--(4)配置默认的Action
- 决定学习编程的感想
- HTML+CSS基础 a标签实现达到当前页面的最底部与达到当前页面的顶端
- PHP自学日记9.24
- SQL注入的基本方法和操作步骤