Wywołanie metody z innej klasy

2015-02-01 19:49
Riw
0

Witam,mam pewien problem, otóż napisałem prosty czat do mojej gry i chciałem umożliwić również wykonywanie prostych komend administratorskich takich jak czyszczenie ekwipunku i przydzielanie przedmiotów. Z metody windowFunc wywołuję metodę ClearInventory:

public static void ClearInventory()
    {
        for (int i = 0; i < inventory.Count; i++) 
        {
            inventory [i] = new Item ();
        }
    }

[RPC]
    private void windowFunc(int id)
    {

        GUI.BeginGroup (windowRect);
        ScrollPosition = GUILayout.BeginScrollView (ScrollPosition,GUILayout.Width(75),GUILayout.Height (350));

        GUILayout.Box(messBox, GUILayout.Height(350));

        GUILayout.BeginHorizontal();

        messageToSend = GUILayout.TextField(messageToSend);
        GUILayout.EndScrollView ();
        GUI.EndGroup ();

        if (GUILayout.Button("Send" , GUILayout.Width(75)))
        {
            if(user != "") //Nick
            {
            if(messageToSend.Contains("//"))
            {
                // Tutaj tworzymy Komendy
                if(messageToSend == "//test")
                {
                    networkView.RPC("SendMsg", RPCMode.All,"<color=#00a2ff>" + "Wszystko OK" + "</color>" + "\n");
                    messageToSend = "";
                }
                else if(messageToSend == "//clear")
                {
                        Inventory.ClearInventory();

                }
                else
                {
                    networkView.RPC("SendMsg", RPCMode.All,"<color=#00a2ff>" + "Jan nie mógł znaleźć tej komendy!" + "</color>" + "\n");
                    messageToSend = "";
                }

            }
            else
            {

            networkView.RPC("SendMsg", RPCMode.All, user + ": " + "<color=#00a2ff>" + messageToSend + "</color>" + "\n");
            messageToSend = "";

            }
            }
            else
            {

            }
        }

        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Label("Gracz:");
        user = GUILayout.TextField(user);

        GUILayout.EndHorizontal();

        GUI.DragWindow(new Rect(0, 0, Screen.width, Screen.height));
    }

Gdy próbuję uruchomić grę to otrzymuję błąd:

Assets/Scripts/ChatSystem/Chat.cs(54,59): error CS0120: An object reference is required to access non-static member `Inventory.ClearInventory()'

dodanie znacznika <code class="none"> - @furious programming

edytowany 3x, ostatnio: furious programming, 2015-02-01 23:12
Treść błędów wstawiaj w jakieś znaczniki, np. w &lt;code=none&gt; - furious programming 2015-02-01 23:12

Pozostało 580 znaków

2015-02-01 19:51
0

Odstaw pisanie gier i naucz sie podstaw. NIE DA sie programować jeśli nie rozumiesz jaka jest różnica między KLASĄ a OBIEKTEM.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
Pokaż pozostałe 5 komentarzy
No to co powinienem zrobić żeby działało jak należy (wywaliłem to static)? - Riw 2015-02-01 21:24
nie podoba mi się ? nie spoko, zajeb!@ty jest ten kod, głęboki na 3 ify, jesteś górnikiem ? - niezdecydowany 2015-02-01 21:25
Powinieneś opanować podstawy języka w którym chcesz pisać. Innej rady nie ma. - Shalom 2015-02-01 21:25
Już dałem sobie radę,sorry za kłopot - Riw 2015-02-01 21:28
i ten pusty else na koncu <3 - rafiozo 2015-02-01 22:04

Pozostało 580 znaków

2015-02-01 20:07
0

VS powinien Ci podkreślić te invertory i po najechaniu myszką powinieneś dostać komunikat, że nie można ze statycznej metody odwołać się do niestatycznego pola.

Pokaż pozostałe 5 komentarzy
Ja? Wiem czym to się różni za to nie wiem o co Ci chodzi. - dam1an 2015-02-01 21:29
Bo piszesz tu o przekazywaniu instancji klas (czyli mam nadzieję że obiektów...) do klas, podczas gdy w rzeczywistości w 99% przypadków chcemy jednak przekazać referencje obiektu do innego obiektu. - Shalom 2015-02-01 21:32
No miałem na myśli właśnie referencje. - dam1an 2015-02-01 21:47
Czyli napisałes "instancje klasy do klasy" a chciałeś napisać "referencje obiektu do obiektu?" :D To prawie jak https://www.youtube.com/watch?v=bRjaN2VD4Ak ;] - Shalom 2015-02-01 21:51
Skrót myślowy :P Instancja i obiekt to nie są synonimy? - dam1an 2015-02-01 22:01

Pozostało 580 znaków

2015-02-01 21:27
Riw
0

Dobra,chciałem serdecznie przeprosić za tego typu pytanie.
Nie wiem co,ale już zrobiłem poprawnie i działa.
Wystarczyło że utworzę obiekt tej klasy i tyle.

Pozostało 580 znaków

2015-02-01 21:30

Taki hint na przyszłość: w praktyce rzadko kiedy używa się statycznych elementów klas. Programy obiektowe w większości składają się właśnie z obiektów.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0