##I was making a chat for my game, after I finished scripting it in C# I got this error:
Assets/chat/chat.cs(158,45): error CS0120: An object reference is required to access non-static member `UnityEngine.NetworkView.RPC(string, UnityEngine.RPCMode, params object[])'
###I had also some other errors which I fixed but however I can’t fix this one and truly need your help. I would appreciate any kind of help. Here’s My Code:
using UnityEngine;
using System.Collections;
public class chat : MonoBehaviour {
bool usingChat = false;
bool showChat = false;
string inputField ="";
Vector2 scrollposition;
int width = 500;
int height = 100;
string playerName;
float lastUnfocusTime = 0;
Rect window;
ArrayList playerList = new ArrayList();
class PlayerNode
{
public string playerName;
public NetworkPlayer player;
}
ArrayList chatEntires = new ArrayList();
class chatEntry
{
public string name ="";
public string text ="";
}
void Start ()
{
window = new Rect(Screen.width /2 - width /2, Screen.height - height + 5, width, height);
playerName = PlayerPrefs.GetString("playerName", "");
if (playerName=="") playerName = "RandomName" + Random.Range(1,999);
}
void OnConnectToServer ()
{
ShowChatWindow();
networkView.RPC("TellServerOurName", RPCMode.Server, playerName);
addGameChatMessage(playerName + " has just joined the chat!");
}
void OnServerIntialized()
{
PlayerNode newEntry = new PlayerNode();
newEntry.playerName = playerName;
newEntry.player = Network.player;
playerList.Add(newEntry);
addGameChatMessage(playerName + "has just joined the chat!");
}
PlayerNode GetPlayerNode(NetworkPlayer netPlay)
{
foreach (PlayerNode entry in playerList)
{
if(entry.player == netPlay)
return entry;
}
Debug.LogError("GetPlayerNode: Requested a playernode of non-existing player!");
return null;
}
void OnPlayerDisconnected(NetworkPlayer netPlayer)
{
addGameChatMessage("A Player has disconnected");
playerList.Remove(GetPlayerNode(netPlayer));
}
void OnDisconnectedFromServer()
{
CloseChatWindow();
}
[RPC]
void TellServerOurName(string name, NetworkMessageInfo info)
{
PlayerNode newEntry = new PlayerNode();
newEntry.playerName = playerName;
newEntry.player = Network.player;
playerList.Add(newEntry);
addGameChatMessage(playerName + " has just joined the chat!");
}
void CloseChatWindow()
{
showChat = false;
inputField = "";
chatEntires = new ArrayList();
}
void ShowChatWindow()
{
showChat = false;
inputField = "";
chatEntires = new ArrayList();
}
void OnGUI()
{
if(!showChat) return;
if (Event.current.type == EventType.keyDown && Event.current.character == '
’ & inputField.Length <= 0 )
{
if(lastUnfocusTime + .25f < Time.time)
{
usingChat = true;
GUI.FocusWindow(5);
GUI.FocusControl(“Chat input field”);
}
}
window = GUI.Window(5, window, GlobalChatWindow, "");
}
void GlobalChatWindow(int id)
{
GUILayout.BeginVertical();
GUILayout.Space(10);
GUILayout.EndVertical();
scrollposition = GUILayout.BeginScrollView(scrollposition);
foreach (chatEntry entry in chatEntires)
{
GUILayout.BeginHorizontal();
if(entry.name == " - ")
GUILayout.Label(entry.name + entry.text);
else
GUILayout.Label(entry.name + ": " + entry.text);
GUILayout.EndHorizontal();
GUILayout.Space(2);
}
GUILayout.EndScrollView();
if(Event.current.type == EventType.keyDown && Event.current.character == '
’ & inputField.Length <= 0)
{
HitEnter(inputField);
GUI.SetNextControlName(“Chat input field”);
inputField = GUILayout.TextField(inputField);
if (Input.GetKeyDown("mouse 0"))
{
if (usingChat)
{
usingChat = false;
GUI.UnfocusWindow();
lastUnfocusTime = Time.time;
}
}
}
}
void HitEnter(string msg)
{
msg = msg.Replace('
', ’ ') ;
NetworkView.RPC(“ApplyGlobalChatText”, RPCMode.All, playerName, msg);
}
[RPC]
void ApplyGlobalChatText(string name, string msg)
{
chatEntry entry = new chatEntry();
entry.name = name;
entry.text = msg;
chatEntires.Add(entry);
if (chatEntires.Count > 4)
chatEntires.RemoveAt(0);
scrollposition.y = 1000000;
inputField = "";
}
void addGameChatMessage(string str)
{
ApplyGlobalChatText(" - ", str);
if(Network.connections.Length > 0)
networkView.RPC("ApplyGlobalChatText", RPCMode.Others , " - ", str);
}
}