0
ではありません。こんにちは、私はマルチプレイヤーゲームのチャットをしようとしています。メッセージプレハブをすべてのクライアントとホスト上でインスタンス化しています。 。テキストは変わらず、デフォルトのままです。UNET - オブジェクトはネットワーク経由で同期されますが、テキストコンポーネントは
ChatManager.cs:
using System.Collections.Generic;
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class ChatManager : NetworkBehaviour
{
[SerializeField] private GameObject chat;
[SerializeField] private GameObject chatItemPrefab;
[HideInInspector] public List<ChatItem> messages;
public float messageExpireTime = 5;
public static ChatManager instance;
void Awake()
{
instance = this;
}
public void ChatSendMessage(string sender, string message)
{
CmdChatSendMessage(sender, message);
}
[Command]
void CmdChatSendMessage(string sender, string message)
{
GameObject chatItem = Instantiate(chatItemPrefab);
chatItem.transform.SetParent(chat.transform);
ChatItem messageSettings = chatItem.GetComponent<ChatItem>();
messageSettings.Setup(sender, message);
messageSettings.chatNetId = chat.GetComponent<NetworkIdentity>().netId;
NetworkServer.Spawn(chatItem);
StartCoroutine(WaitForExpire(chatItem));
}
public IEnumerator WaitForExpire(GameObject chatItem)
{
yield return new WaitForSeconds(messageExpireTime);
CmdDestroyChatMessage(chatItem);
}
[Command]
void CmdDestroyChatMessage(GameObject chatItem)
{
NetworkServer.Destroy(chatItem);
}
}
ChatItem.cs:
using UnityEngine.UI;
using UnityEngine;
using UnityEngine.Networking;
public class ChatItem : NetworkBehaviour
{
[SerializeField] private Text senderText;
[SerializeField] private Text messageText;
[SyncVar] public NetworkInstanceId chatNetId;
[SyncVar] public string sender;
[SyncVar] public string message;
void Start()
{
GameObject chatParent = ClientScene.FindLocalObject(chatNetId);
transform.SetParent(chatParent.transform);
}
public void Setup(string sender, string message)
{
senderText.text = string.Format("[{0}]:", sender);
messageText.text = message;
this.sender = sender;
this.message = message;
}
}
"ChatSendMessageが" paremeters "サーバー" と呼ばれ、 "こんにちは!" 場合はここで私が持っているコードです。
をしかし、クライアントが見ている:
ホストが見る:ホスト上の
デフォルトのテキストである..
問題は何ですか私は対処している。何か案は?ありがとう