Алгоритм таков:
запускаем игру, коннектимся. и тут же создается обьект player, который представляет из себя Go пустой. В него удочерены камера и модель космического корабля самого.
Контроллер игрока отключён. В середине экрана GUI, там предлагается ввести имя.выглядит это вот так:
Синтаксис:
Используется javascript
var PlayerName = "NoName...";//имя,которое будем вводить
public var on = false;//переменная, при отключении которой пропадает gui
var player : Transform;//трансформ игрока
var texte : Transform;//ссылка на трансформ 3d текста, в который будет вбиватсья наше имя
function Start(){
if(networkView.isMine)
on = true;//если networkView isme то появляется gui
}
function OnGUI(){
if(on)if(networkView.isMine){
PlayerName = GUI.TextField(new Rect(Screen.width/2.3f,Screen.height/2.1f,100,20),PlayerName); //ввод имени
GUI.Label(new Rect(Screen.width/2.3f,Screen.height/2.3f,150,20),"EnterYourName:"); //просто текст
if(GUI.Button(new Rect(Screen.width/2.3f,Screen.height/1.9f,70,20),"login")){//кнопка логин
login();
}
}
}
function login(){//сама функция
see = player.GetComponent("ControllerCorable");
see.onoff = true;
tx = texte.gameObject.GetComponent("TextMesh");
//tx.text = PlayerName;
on = false;
}
здесь вроде всё ок. Далее сам скрипт на обьекте 3d текста.
Синтаксис:
Используется javascript
public var cor : Transform;//ссылка на обьект, на котором висит предыдущий скрипт
function Update () {
if(networkView.isMine)
networkView.RPC("naaaame",RPCMode.All,new Vector3()); //вот тут я и не могу разобраться.
}
public function naaaame( location : Vector3){//сама функция назначения имени в 3dtext
te = GetComponent("TextMesh");
ss = cor.GetComponent("PlayerInfo");
te.text = ss.PlayerName;
}
оно работает, если убрать rpc.Но имя видно только своё. На остальных игроках написанно "hello world", то есть у меня не получается при входе в игру сообщить ВСЕМ, что на обьекте изменен 3d текст.
прошу помочь с rpc: что написать в скрипте чтобы имя игрока видели все, а не только он сам?