#steamworks-api
Вопрос:
Мой сценарий выглядит так, и когда я делаю сборку и тестирую (самостоятельно), он не вызывает HandleIncomingMessage, я расшифровал, что программа запускает steamapi.runcallbacks, каждый кадр, но функция обработки входящего сообщения чата все равно никогда не вызывается, и это заставляет меня терять рассудок при попытке отладить что-то, с чем я не могу найти никаких проблем!! Спасибо за вашу помощь!
защищенный обратный вызов<LobbyChatMsg_t> Входящее сообщение;
byte[] PvChat = new byte[1024];
int CubeData;
int CHatID;
[SerializeField] private GameObject ChatMessageButton = null;
[SerializeField] private Transform Content = null;
[SerializeField] private TMP_InputField Input = null;
public static CSteamID HostID;
// Start is called before the first frame update
void Start()
{
IncomingMessage = Callback<LobbyChatMsg_t>.Create(HandleIncomingMessage);
}
// Update is called once per frame
void Update()
{
SteamAPI.RunCallbacks();
}
[ServerCallback]
private void HandleIncomingMessage(LobbyChatMsg_t callback)
{
Debug.Log("RecivedMessage");
CHatID = (int)callback.m_iChatID;
int Bytes = SteamMatchmaking.GetLobbyChatEntry(
new CSteamID(callback.m_ulSteamIDLobby),
CHatID,
out CSteamID PlayerID,
PvChat,
CubeData,
out EChatEntryType peChatEntryType
);
string message = PvChat.ToString();
ChatHandle(message, PlayerID);
}
[Server]
private void ChatHandle(string message, CSteamID Id)
{
string name = SteamFriends.GetFriendPersonaName(Id);
GameObject prefabInstance = Instantiate(ChatMessageButton, Content);
TMP_Text text = prefabInstance.GetComponentInChildren<TMP_Text>();
text.text = $"{name}: {message}";
NetworkServer.Spawn(prefabInstance);
}
[Client]
private bool SendChatMessage(string Message, CSteamID ID)
{
byte[] message = new byte[1024];
message = Encoding.ASCII.GetBytes(Message);
return SteamMatchmaking.SendLobbyChatMsg(ID, message, message.Length);
}
public void ButtonSendPress()
{
Debug.Log("Yes");
string Message = Input.text;
Debug.Log( SendChatMessage(Message, HostID));
}