unity UNet客户端权限
Unity UNet client authority
我正在制作一款多人游戏,我正在尝试在客户端上实例化一个新对象。该对象应由该玩家单独控制。
我通过简单地在客户端实例化它然后生成它来尝试它:
public class Player : NetworkBehaviour
{
[SerializeField]
private Card _testCard;
void Update()
{
if (!isLocalPlayer) return;
if (Input.GetKeyDown(KeyCode.Space))
{
RaycastHit hit;
if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit))
{
var card = Instantiate(_testCard);
card.transform.position = hit.point;
card.Name = "Test";
NetworkServer.Spawn(card.gameObject);
//or call this from a command, shown below
}
}
}
/*[Command]
void CmdPlayTestCard(string name, Vector3 position)
{
var card = Instantiate(_testCard);
card.transform.position = position;
card.Name = name;
NetworkServer.Spawn(card.gameObject);
}*/
}
这会在客户端上生成对象,并且可以由它控制,但不会在服务器上生成。
我也在Command
中做了同样的事情,然后它到处都被实例化了,但客户端无法控制它。但是服务器可以控制它。
这样做的正确方法是什么?创建一个应该由其中一名玩家而不是服务器控制的对象?
我尝试用谷歌搜索但找不到任何东西。
谢谢!
笨蛋,我不知道答案,但是频道#unity3d-unet 中的 irc.freenode.net 有一个社区可能!
此外,此处收集了一些资源和代码片段:
https://goo.gl/UmBBpM
我发现这是在 Unity 5.2 中出现的,当前的测试版发行说明将其列为一项功能:"Networking: Added support for client-side authority for non-player objects."
因此,这将在 9 月份为所有人提供。
我正在制作一款多人游戏,我正在尝试在客户端上实例化一个新对象。该对象应由该玩家单独控制。
我通过简单地在客户端实例化它然后生成它来尝试它:
public class Player : NetworkBehaviour
{
[SerializeField]
private Card _testCard;
void Update()
{
if (!isLocalPlayer) return;
if (Input.GetKeyDown(KeyCode.Space))
{
RaycastHit hit;
if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit))
{
var card = Instantiate(_testCard);
card.transform.position = hit.point;
card.Name = "Test";
NetworkServer.Spawn(card.gameObject);
//or call this from a command, shown below
}
}
}
/*[Command]
void CmdPlayTestCard(string name, Vector3 position)
{
var card = Instantiate(_testCard);
card.transform.position = position;
card.Name = name;
NetworkServer.Spawn(card.gameObject);
}*/
}
这会在客户端上生成对象,并且可以由它控制,但不会在服务器上生成。
我也在Command
中做了同样的事情,然后它到处都被实例化了,但客户端无法控制它。但是服务器可以控制它。
这样做的正确方法是什么?创建一个应该由其中一名玩家而不是服务器控制的对象?
我尝试用谷歌搜索但找不到任何东西。
谢谢!
笨蛋,我不知道答案,但是频道#unity3d-unet 中的 irc.freenode.net 有一个社区可能!
此外,此处收集了一些资源和代码片段: https://goo.gl/UmBBpM
我发现这是在 Unity 5.2 中出现的,当前的测试版发行说明将其列为一项功能:"Networking: Added support for client-side authority for non-player objects."
因此,这将在 9 月份为所有人提供。