1. Создал PlayerPrefab (пустышка-префаб), на нем висит Network Identity (Local Player Author... стоит true) и мой скрипт For Player (класс наследуется о NetworkBehaviour):
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class ForPlayer : NetworkBehaviour {
// Use this for initialization
ScriptSend scriptSend;
void Start()
{
scriptSend = GameObject.Find("GOforScriptSend").GetComponent<ScriptSend>();
if (isLocalPlayer)
{
scriptSend.thisPlayer = this.GetComponent<ForPlayer>();
}
}
public void Send(string message)
{
CmdSend1(Network.player.guid, message);
}
[Command]
public void CmdSend1(string id, string message)
{
Debug.Log("send = "+message);
RpcSend1(id, message);
}
[ClientRpc]
public void RpcSend1(string id, string message)
{
scriptSend.text1.text += System.Environment.NewLine + id+": "+ message;
}
// Update is called once per frame
void Update () {
}
}
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class ForPlayer : NetworkBehaviour {
// Use this for initialization
ScriptSend scriptSend;
void Start()
{
scriptSend = GameObject.Find("GOforScriptSend").GetComponent<ScriptSend>();
if (isLocalPlayer)
{
scriptSend.thisPlayer = this.GetComponent<ForPlayer>();
}
}
public void Send(string message)
{
CmdSend1(Network.player.guid, message);
}
[Command]
public void CmdSend1(string id, string message)
{
Debug.Log("send = "+message);
RpcSend1(id, message);
}
[ClientRpc]
public void RpcSend1(string id, string message)
{
scriptSend.text1.text += System.Environment.NewLine + id+": "+ message;
}
// Update is called once per frame
void Update () {
}
}
2. На сцене есть GOforScriptSend (путышка), на котором висит мой скрипт
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
public class ScriptSend : MonoBehaviour {
public InputField input1;
public Text text1;
public ForPlayer thisPlayer;
// Use this for initialization
void Start ()
{
}
public void Send()
{
thisPlayer.Send(input1.text);
}
// Update is called once per frame
void Update ()
{
}
}
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
public class ScriptSend : MonoBehaviour {
public InputField input1;
public Text text1;
public ForPlayer thisPlayer;
// Use this for initialization
void Start ()
{
}
public void Send()
{
thisPlayer.Send(input1.text);
}
// Update is called once per frame
void Update ()
{
}
}
3. На сцене находится NetWorkObject (тоже пустышка), у которого присутствует компонент Network Manager... В Online и Offline Scene стоит моя единственная сцена, а в Network address я поставил IP 192.168.0.2 Auto Create Player = true, Player Prefab - Player1Prefab. Так же висит компонент Network manager HUD, show runtime gui = true.
Все работает, если создать сервер на машине с IP 192.168.0.2.
1. Вопрос, как увидеть все сервера в локальной сети? Обзванивать весь диапазон 192.168.х.х (где х от 0 до 255)?
2. Как обойтись без компонента Network Manager HUD? Понимаю, что это по-обезьяньи, сначала налепить, а потом думать что чем управляет, но... Какими функциями Network Managera он управляет? Например, какие его функции вызывать, чтобы создать сервер и какие, чтобы подключиться?