我正在使用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系統,這就是爲什麼我認爲它可能會更好地爲你投下一個更大的網,對不起隊友 –