- Home /
Network.Instantiate
Hello guys!
I wanted to explore the world of the unity networking system and I bumped into a little problem... I already got my server running and I am able to find it with my client! But as I click on the button "start new server" and want according to this I just want to spawn an object for now, my server chrashes. I don't know why but it seems that the "Network.Instantiate" is not correct? Any help plz :)
using UnityEngine; using System.Collections;
public class ServerManager : MonoBehaviour { string registeredGameName = "SC_Networkingproject_number_one_by_programmer98"; bool isRefreshing = false; float refreshRequestLenght = 3.0f; HostData[] hostData;
private void StartServer()
{
Network.InitializeServer(16, 25020, false);
MasterServer.RegisterHost(registeredGameName, "Click Here To Join!", "Discription: test server");
}
void OnServerInitialized()
{
Debug.Log("Server has been intizialized!");
SpawnPlayer();
}
void OnMasterServerEvent(MasterServerEvent masterServerEvent)
{
if(masterServerEvent == MasterServerEvent.RegistrationSucceeded)
{
Debug.Log("Registration Succsessful!");
}
}
public IEnumerator RefreshHostList()
{
Debug.Log("Refreshing...");
MasterServer.RequestHostList (registeredGameName);
float timeStarted = Time.time;
float timeEnd = Time.time + refreshRequestLenght;
while (Time.time < timeEnd)
{
hostData = MasterServer.PollHostList();
yield return new WaitForEndOfFrame();
}
if (hostData == null || hostData.Length == 0) {
Debug.Log ("No Active Servers Have Been Found!");
}
else
{
Debug.Log (hostData.Length + "Found!");
}
}
private void SpawnPlayer()
{
Debug.Log ("Spawning Player...");
Network.Instantiate (Resources.Load("Prefabs/Cube"), new Vector3(0.0f, 2.0f,.0f), Quaternion.identity, 0);
}
public void OnGUI()
{
if (Network.isClient || Network.isServer)
{
return;
}
if (GUI.Button (new Rect(Screen.width/2, 25, 150 ,35), "start new server"))
{
//Start server function here:
StartServer();
Debug.Log("Connecting...!");
}
if (GUI.Button (new Rect(Screen.width/2, 65, 150, 35), "Refresh server list"))
{
//Refresh server function here:
StartCoroutine("RefreshHostList");
}
if (hostData != null)
{
for (int i = 0; i < hostData.Length; i++)
{
if (GUI.Button (new Rect(Screen.width/2, 65+(30 * i), 300, 35), hostData[i].gameName))
{
Network.Connect(hostData[i]);
}
}
}
}
}
Script source (https://www.youtube.com/watch?v=BRAcRGhcMKc) by CodeCompile
Answer by hbalint1 · May 08, 2015 at 07:05 PM
In Photon networking the prefab must be located in the Resources folder. i don't know Unity's built in Networking, but I think it's the same, so just make a new folder called Resources anywhere in the hierarchy. The Instantiate method will look in that folder by name so you don't have to add the path. Just use this, after you placed your cube prefab in the Resources directory:
Network.Instantiate (Resources.Load("Cube"), new Vector3(0.0f, 2.0f,.0f), Quaternion.identity, 0);
Yes it's the same for unity networking :) Needs to be in any folder called Resources (caps sensitive)
Your answer