Hello
I’ve made a simple Chat-System but I really don’t know how to add Scrolling,
Here is my Code:
using UnityEngine;
using System.Collections;
public class Chat : MonoBehaviour
{
public GUISkin myskin;
private Rect windowRect = new Rect(0,Screen.height - 400, Screen.width, 400);
private string messBox = "", messageToSend = "", user = "";
private int ID;
private Inventory MyInventory = new Inventory ();
private PlayerSkin MyPlayerSkin = new PlayerSkin();
private bool Send;
private bool AdminMode;
private Texture2D otherSkin;
private Sprite mysprite;
private bool ChatVisible;
Vector2 scrollPosition;
void Start()
{
user = PlayerEssentials.PlayerName;
//otherSkin = Resources.Load<Texture2D> ("Skins/PlayerBase");
}
private void OnGUI()
{
GUI.skin = myskin;
if (NetworkPeerType.Disconnected != Network.peerType && ChatVisible)
{
windowRect = GUI.Window (1, windowRect, windowFunc, "", myskin.GetStyle ("ChatWindowStyle"));
}
}
void Update()
{
if (Input.GetKeyDown (KeyCode.T)) //dodanie else sprawi jednorazowe działanie;
{
ChatVisible = !ChatVisible;
}
}
[RPC]
private void windowFunc(int id)
{
GUILayout.Box(messBox,GUILayout.Height(350));
GUILayout.BeginHorizontal();
messageToSend = GUILayout.TextField(messageToSend);
GUILayout.EndHorizontal ();
GUILayout.BeginVertical ();
if (Input.GetKeyDown(KeyCode.T) || Input.GetKeyDown(KeyCode.F))
{
if(user != "")
{
if(messageToSend.Contains("//"))
{
// Tutaj tworzymy Komendy
if(messageToSend == "//test")
{
networkView.RPC("SendMsg", RPCMode.All,"<color=#00a2ff>" + "Wszystko jest w porządku" + "</color>" + "\n");
messageToSend = "";
}
else if(messageToSend == "//inventory clear" && AdminMode)
{
MyInventory.ClearInventory ();
messageToSend = "";
}
else if(messageToSend.StartsWith("//item add ") && AdminMode)
{
string d = (messageToSend.Replace("//item add ",""));
MyInventory.database = GameObject.FindGameObjectWithTag("Item Database").GetComponent<ItemDatabase>();
MyInventory.AddItem(int.Parse (d));
messageToSend = "";
}
else if(messageToSend.StartsWith("//item remove ") && AdminMode)
{
string d = (messageToSend.Replace("//item remove ",""));
MyInventory.database = GameObject.FindGameObjectWithTag("Item Database").GetComponent<ItemDatabase>();
MyInventory.RemoveItem(int.Parse (d));
messageToSend = "";
}
else if(messageToSend == "//chat clear" && AdminMode)
{
messBox = "";
messageToSend = "";
}
else if(messageToSend == "//adminmode on emiltokomputer")
{
AdminMode = true;
messageToSend = "";
}
else if(messageToSend == "//adminmode off" && AdminMode)
{
AdminMode = false;
messageToSend = "";
}
else if(messageToSend.StartsWith("//speed me ") && AdminMode)
{
string d = (messageToSend.Replace("//speed me ",""));
PlayerEssentials.speed = float.Parse(d);
messageToSend = "";
}
else if(messageToSend == "//invisible on" && AdminMode)
{
PlayerEssentials.spriteRenderer.sprite = new Sprite();
}
else if(messageToSend.StartsWith("//skin change ") && AdminMode)
{
string d = (messageToSend.Replace("//skin change ",""));
otherSkin = Resources.Load<Texture2D>("Skins/" + d);
PlayerEssentials.spriteRenderer.sprite = Sprite.Create(otherSkin,new Rect(0,0,otherSkin.width,otherSkin.height),new Vector2(0.5f,0.5f));
messageToSend = "";
//string d = (messageToSend.Replace("//skin change ",""));
//MyPlayerSkin.skinDatabase = GameObject.FindGameObjectWithTag ("Skin Database").GetComponent<SkinDatabase>();
// MyPlayerSkin.ChangeSkin(int.Parse (d));
}
else
{
networkView.RPC("SendMsg", RPCMode.All,"<color=#ff8400>" + "Emil nie mógł znaleźć tej komendy!" + "</color>" + "\n");
messageToSend = "";
}
}
else
{
if(messageToSend != "")
{
networkView.RPC("SendMsg", RPCMode.All, user + ": " + "<color=#00a2ff>" + messageToSend + "</color>" + "\n");
messageToSend = "";
}
else
{
}
}
}
if(messageToSend == "")
{
Send = false;
}
else
{
Send = true;
}
}
GUILayout.EndVertical();
}
[RPC]
private void SendMsg(string mess)
{
messBox += mess;
}
}
Can anyone tell me how to do this ?