- Home /
'UnityEngine.Networking.Match.MatchDesc' is inaccessible due to its protection level (CS0122) (Assembly-CSharp)
I just copied an example of a matchmaker script from Unity manual (wich is actually pasted below), but MonoDevelop points on a mistake "is inaccessible due to its protection level (CS0122) " and on "Error CS0052: Inconsistent accessibility". I changed literally nothing, just attempted to compile an example code. How to solve it? using UnityEngine; using UnityEngine.Networking; using UnityEngine.Networking.Types; using UnityEngine.Networking.Match; using System.Collections.Generic;
public class HostGame : MonoBehaviour
{
List<MatchDesc> matchList = new List<MatchDesc>(); /* First cs0122 error + Error CS0052: Inconsistent accessibility: field type 'System.Collections.Generic.List<UnityEngine.Networking.Match.MatchDesc>' is less accessible than field 'HostGame.matchList' (CS0052) (Assembly-CSharp)*/
bool matchCreated;
NetworkMatch networkMatch;
void Awake()
{
networkMatch = gameObject.AddComponent<NetworkMatch>();
}
void OnGUI()
{
// You would normally not join a match you created yourself but this is possible here for demonstration purposes.
if(GUILayout.Button("Create Room"))
{
CreateMatchRequest create = new CreateMatchRequest();
create.name = "NewRoom";
create.size = 4;
create.advertise = true;
create.password = "";
networkMatch.CreateMatch(create, OnMatchCreate);
}
if (GUILayout.Button("List rooms"))
{
networkMatch.ListMatches(0, 20, "", OnMatchList);
}
if (matchList.Count > 0)
{
GUILayout.Label("Current rooms");
}
foreach (var match in matchList)
{
if (GUILayout.Button(match.name))
{
networkMatch.JoinMatch(match.networkId, "", OnMatchJoined);
}
}
}
public void OnMatchCreate(CreateMatchResponse matchResponse) //Second error(a combination of two previous)
{
if (matchResponse.success)
{
Debug.Log("Create match succeeded");
matchCreated = true;
Utility.SetAccessTokenForNetwork(matchResponse.networkId, new NetworkAccessToken(matchResponse.accessTokenString));
NetworkServer.Listen(new MatchInfo(matchResponse), 9000);
}
else
{
Debug.LogError ("Create match failed");
}
}
public void OnMatchList(ListMatchResponse matchListResponse) //third error
{
if (matchListResponse.success && matchListResponse.matches != null)
{
networkMatch.JoinMatch(matchListResponse.matches[0].networkId, "", OnMatchJoined);
}
}
public void OnMatchJoined(JoinMatchResponse matchJoin)
{
if (matchJoin.success)
{
Debug.Log("Join match succeeded");
if (matchCreated)
{
Debug.LogWarning("Match already set up, aborting...");
return;
}
Utility.SetAccessTokenForNetwork(matchJoin.networkId, new NetworkAccessToken(matchJoin.accessTokenString));
NetworkClient myClient = new NetworkClient();
myClient.RegisterHandler(MsgType.Connect, OnConnected);
myClient.Connect(new MatchInfo(matchJoin));
}
else
{
Debug.LogError("Join match failed");
}
}
public void OnConnected(NetworkMessage msg)
{
Debug.Log("Connected!");
}
}
Answer by hal9000 · Jan 26, 2017 at 09:06 AM
Here is the guide to update the API calls. The guide is very good, showing examples how to replace old code with the new API calls.
https://docs.unity3d.com/Manual/UpgradeGuide54Networking.html
Answer by Adam-Mechtley · Nov 25, 2016 at 01:46 PM
Hi @Masurk! This sounds like a page in the documentation was not updated. Could you please file a bug report (and select Documentation from the drop-down) specifying exactly which page this is on. This page in the docs claims that MatchDesc is now MatchInfoSnapshot