• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[Unity] Multiplayer - Trying to send command without authority.

Object Storage Arubacloud
0 głosów
246 wizyt
pytanie zadane 28 listopada 2018 w OpenGL, Unity przez MsMaciek123 Pasjonat (24,760 p.)

Witam, mam pewien problem z multiplayer.

Robię czat. Chcę go zrobić bez użycia prefabu playera.

Stworzyłem więc obiekt Networking z potrzebnymi skryptami (NetworkManager i HUD).

Zrobiłem także obiekt Manager z skryptem Chat i Network Identity (zaznaczone Local Player Authority)

 

Skrypt Chat:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;

public class Chat : NetworkBehaviour {

	public Text ChatPan; //tekst
	public InputField messaging; //pole wejściowe

	public void Update() // tutaj chciałęm dać client Authority
	{
		if(isServer)
			this.GetComponent<NetworkIdentity>().AssignClientAuthority(this.GetComponent<NetworkIdentity>().connectionToClient);
	}
	
	public void OnStartAuthority()
	{
		Debug.Log("LOGGINED WITH AUTHORITY!");
	}
	
	void FixedUpdate() //to do wypisywania informacji
	{
		Debug.Log("AUTHORITY: "+this.GetComponent<NetworkIdentity>().hasAuthority.ToString());
		Debug.Log("ConnectionToClient: " + this.GetComponent<NetworkIdentity>().connectionToClient);
 		Debug.Log("ConnectionToServer: " + this.GetComponent<NetworkIdentity>().connectionToServer);
	}
	
	public void SendNow()
	{
		Debug.Log("SendNow used");
		CmdSendMessageNow(messaging.text);
		//messaging.text="";
	}
	
	
	[ClientRpc]
	public void RpcSend(string message)
	{
		ChatPan.text+="\n"+message;
	}
	
	[Command]
	public void CmdSendMessageNow(string message)
	{
		RpcSend(message);
		Debug.Log("CommandOK");
	}
}

Po wpisaniu wiadomości u hosta, wysyła się poprawnie.

Lecz jeśli wpiszę coś u clienta, wywala taki błąd:

Trying to send command for object without authority.
UnityEngine.Networking.NetworkBehaviour:SendCommandInternal(NetworkWriter, Int32, String)
Chat:CallCmdSendMessageNow(String)
Chat:SendNow() (at Assets/Scripts/Chat.cs:46)
UnityEngine.EventSystems.EventSystem:Update()

Czytałem o tym dużo. Wiem, że host musi "dać authority" clientowi, lecz nie umiem wykonać tego.

Wiem tyle, że to musi wykonać host.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
1 odpowiedź 825 wizyt
pytanie zadane 18 marca 2020 w OpenGL, Unity przez Bartek12 Mądrala (5,510 p.)
0 głosów
1 odpowiedź 976 wizyt
pytanie zadane 24 czerwca 2019 w OpenGL, Unity przez marcin_w Gaduła (3,190 p.)
0 głosów
1 odpowiedź 110 wizyt

92,657 zapytań

141,549 odpowiedzi

319,988 komentarzy

62,026 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...