Jump to content
Unity Insider Forum

Unity Script Error


TomdieBratwurst
 Share

Recommended Posts

Ich programmiere gerade einen Multiplayer für mein spiel ich nutze dafür PUN 2 

Ich habe eine tutorial reihe verfolgt und alles  genau so gemacht trotzdem bekomme ich folgenden error :  unity script error cs115 no suitable method found to override

Der Fehler ist ganz unten bei(    public override void OnPlayerEnteredRoom(Player newPlayer)     und        public override void OnPlayerLeftRoom(Player otherPlayer))

 

hier mein code:

 

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
using Photon.Realtime;
using UnityEngine.UI;

public class LobbyManager : MonoBehaviourPunCallbacks
{

    public InputField roomInputField;
    public GameObject lobbyPanel;
    public GameObject roomPanel;
    public Text roomName;

    public RoomItem roomItemPrefab;
    List<RoomItem> roomItemsList = new List<RoomItem>();
    public Transform contentObject;

    public float timeBetweenUpdates = 1.5f;
    float nextUpdateTime;

    public List<PlayerItem> playerItemsList = new List<PlayerItem>();
    public PlayerItem playerItemPrefab;
    public Transform playerItemParent;

    private void Start()
    {
        PhotonNetwork.JoinLobby();
    }

    public void OnClickCreate()
    {
        if (roomInputField.text.Length >= 1)
        {
            PhotonNetwork.CreateRoom(roomInputField.text, new RoomOptions() { MaxPlayers = 3 });
        }
    }

    public override void OnJoinedRoom()
    {
        lobbyPanel.SetActive(false);
        roomPanel.SetActive(true);
        roomName.text = "Room Name: " + PhotonNetwork.CurrentRoom.Name;
        UpdatePlayerList();
    }

    public override void OnRoomListUpdate(List<RoomInfo> roomList)
    {
        if (Time.time >= nextUpdateTime)
        {
            UpdateRoomList(roomList);
            nextUpdateTime = Time.time + timeBetweenUpdates;
        }
    }

    void UpdateRoomList(List<RoomInfo> list)
    {

        foreach (RoomItem item in roomItemsList)
        {
            Destroy(item.gameObject);
        }
        roomItemsList.Clear();

        foreach (RoomInfo room in list)
        {
            RoomItem newRoom = Instantiate(roomItemPrefab, contentObject);
            newRoom.SetRoomName(room.Name);
            roomItemsList.Add(newRoom);
        }
    }

    public void JoinRoom(string roomName)
    {
        PhotonNetwork.JoinRoom(roomName);
    }

    public void OnClickLeaveRoom()
    {
        PhotonNetwork.LeaveRoom();
    }

    public override void OnLeftRoom()
    {
        roomPanel.SetActive(false);
        lobbyPanel.SetActive(true);
    }

    public override void OnConnectedToMaster()
    {
        PhotonNetwork.JoinLobby();
    }


    void UpdatePlayerList()
    {
        foreach (PlayerItem item in playerItemsList)
        {
            Destroy(item.gameObject);
        }
        playerItemsList.Clear();

        foreach (KeyValuePair<int, Player> player in PhotonNetwork.CurrentRoom.Players)
        {
            PlayerItem newPlayerItem = Instantiate(playerItemPrefab, playerItemParent);
            playerItemsList.Add(newPlayerItem);
        }
    }

    public override void OnPlayerEnteredRoom(Player newPlayer)
    {
        UpdatePlayerList();
    }

    public override void OnPlayerLeftRoom(Player otherPlayer)
    {
        UpdatePlayerList();
    }
}
 

Bild_2022-04-16_200435653.png

Link to comment
Share on other sites

Nach meinem Verständnis sucht das Skript durch das "override" Schlüsselwort nach einer "virtual" Methode in der Basis-Klasse.
Wurden die Implementation dieser beiden Methoden möglicherweise in der MonoBehaviourPunCallbacks Klasse vergessen?
Falls dessen Existenz nicht gewünscht ist, sollte sich das Problem lösen, wenn du in deinem Code das "override" schlüsselwort entfernst
 

Link to comment
Share on other sites

vor 7 Stunden schrieb SkipToPlay:

Nach meinem Verständnis sucht das Skript durch das "override" Schlüsselwort nach einer "virtual" Methode in der Basis-Klasse.
Wurden die Implementation dieser beiden Methoden möglicherweise in der MonoBehaviourPunCallbacks Klasse vergessen?
Falls dessen Existenz nicht gewünscht ist, sollte sich das Problem lösen, wenn du in deinem Code das "override" schlüsselwort entfernst
 

von wo genau soll ich das override entfernen wenn ich das unten bei den fehlern entferne kommt ein neuer error

Link to comment
Share on other sites

vor 7 Stunden schrieb SkipToPlay:

Nach meinem Verständnis sucht das Skript durch das "override" Schlüsselwort nach einer "virtual" Methode in der Basis-Klasse.
Wurden die Implementation dieser beiden Methoden möglicherweise in der MonoBehaviourPunCallbacks Klasse vergessen?
Falls dessen Existenz nicht gewünscht ist, sollte sich das Problem lösen, wenn du in deinem Code das "override" schlüsselwort entfernst
 

Und was könnte ich denn vergessen haben was muss ich hinzufügen

 

Link to comment
Share on other sites

Ich kenne mich mit diesem PUN nicht aus. Angenommen, du musstest in deiner Tutorial-Reihe das Skript "MonoBehaviourPunCallbacks" schreiben. In diesem Fall würde ich dir raten, dir die Teile dieser Reihe worum es um diese Teilkomponente geht nochmal anzuschauen und zu prüfen, ob du irgendwo vergessen hast Methoden mit den Namen "OnPlayerEnteredRoom" oder "OnPlayerLeftRoom" anzulegen.

Sofern dieses Skript mit dem PUN-Paket mitgeliefert wird, empfehle ich dir die Videos nochmal anzuschauen, in dem die "OnPlayerEnteredRoom" und "OnPlayerLeftRoom" Methoden im LobbyManager-Skript implementiert werden. Hier darauf achten, ob tatsächlich das "override" Schlüsselwort erforderlich war.
Falls das der Fall war, sollte man eventuell prüfen, ob man wirklich die selbe PUN Version wie im Video verwendet.

Hier kann es helfen, das override Schlüsselwort in den letzten beiden Methoden deines Codes zu entfernen.

btw. in der Regel reicht es aus, eine Frage nur einmal in einem Forum zu stellen ;)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...