我正在使用UNet进行Unity 2D多人游戏。我的问题是,客户端不能发送[Command]
到服务器。 Im在UnityEditor上进行调试,并为我的android手机构建一个apk。如何在UNet(Unity)中的客户端调用[命令]
首先我使用UnityEditor作为主机,手机作为客户端,Debug.Log(SkinName)
APPEARS on the console
。
然后我使用UnityEditor作为客户端和手机作为主机,Debug.Log(SkinName)
DOES NOT APPEAR
。
我试图用[ClientRpc]
而不是[Client]
但它只是使病情加重,无论是客户端和主机不会同步。我不知道我是否以正确的方式执行了[ClientRpc](我是UNet的noob)
我访问了其他线程/论坛和其他UNet教程寻找解决方案,但这是我想出的。
注意:在我访问的其他线程中,人们大多建议不选中Local Player Authority,这是导致问题的原因,但在这种情况下,它是CHECKED
。
代码:
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
using Spine;
using Spine.Unity;
using Spine.Unity.Modules;
class SetupLocalPLayer : NetworkBehaviour {
[SyncVar]
public string SkinName;
public string[] CharNames;
public string[] SlotNames;
public string[] AttachmentSuffix;
void Start(){
TransmitSkins();
SyncSkin();
if (isLocalPlayer) {
var skeletonrenderer = GetComponent<SkeletonRenderer>();
for(int z=0;z<SlotNames.Length;z++){
skeletonrenderer.skeleton.SetAttachment(SlotNames[z],GameController.control.skinName+AttachmentSuffix[z]);
}
GetComponent<PlayerManager>().enabled = true;
GetComponent<FollowCam>().enabled = true;
}
}
void Update() {
}
void SyncSkin(){
if (!isLocalPlayer) {
var skeletonrenderer = GetComponent<SkeletonRenderer>();
for(int z=0;z<SlotNames.Length;z++){
skeletonrenderer.skeleton.SetAttachment(SlotNames[z],SkinName+AttachmentSuffix[z]);
}
}
}
[Command]
void CmdSetSkin(){
SkinName = GameController.control.skinName;
Debug.Log (SkinName);
}
[Client]
void TransmitSkins(){
if (isLocalPlayer) {
CmdSetSkin();
}
}
}
建议添加unet标签。 –
补充说明,你可以帮我这个先生吗?它使我烦恼几天:( – Daniel
我希望我可以,我已经尝试过并且失败了unet系统,这就是为什么我认为它可能会更好地为你投下一个更大的网,对不起队友 –