NetworkTransform did not working with RegisterSpawnHandlers
Hello!
I try to write my own player spawning logic, which create player's gameobject dynamically, but i have some issue with using NetworkTransform for created objects. NetowrkTransform does not want syncing gameobject positions! If i use prepared prefab with ClientScene.RegisterPrefab() all worked perfectly.
This my test script:
using UnityEngine;
using UnityEngine.Networking;
public class Test : NetworkManager
{
// public GameObject testPrefab;
public override void OnServerAddPlayer(NetworkConnection conn, short playerCOntrollerId)
{
Debug.Log("Add new player!");
// GameObject result = (GameObject)Instantiate(testPrefab, Vector3.zero, Quaternion.identity);
// NetworkServer.AddPlayerForConnection(conn, result, playerCOntrollerId);
GameObject result = SpawnPlayerObject(Vector3.zero, NetworkHash128.Parse("asd"));
NetworkServer.AddPlayerForConnection(conn, result, playerCOntrollerId, NetworkHash128.Parse("asd"));
}
public override void OnClientConnect(NetworkConnection conn)
{
Debug.Log("New player connected!");
// ClientScene.RegisterPrefab(testPrefab);
ClientScene.RegisterSpawnHandler(NetworkHash128.Parse("asd"), SpawnPlayerObject, UnspawnPlayerObject);
base.OnClientConnect(conn);
}
public GameObject SpawnPlayerObject(Vector3 position, NetworkHash128 hash)
{
Debug.Log("Custom new player spawn!");
GameObject result = GameObject.CreatePrimitive(PrimitiveType.Capsule);
result.AddComponent<NetworkIdentity>();
result.AddComponent<NetworkTransform>();
new GameObject("player-child").transform.SetParent(result.transform);
result.transform.position = position;
return result;
}
public void UnspawnPlayerObject(GameObject unspawnObject)
{
Debug.Log("Custom player unspawn!");
Destroy(unspawnObject);
}
}
And this i have in result:
I think i do something wrong in spawhandlers registration or may be in hashes. And also confuses me pink of the spawned object on the client.
What i'm doing wrong?
Answer by MilesAway1980 · Nov 23, 2015 at 09:49 PM
Try printing out the result from NetworkHash128.Parse("asd")
I did and got 0000000000000000
It seems like it's actually kind of difficult to get a good random string of text from it.
I tried something longer, like: NetworkHash128.Parse("This text string");
and only got: 0000000000e00000
Mess around with a few different parse strings to get some better results.
Also, pink is the default color when objects don't have a material assigned to them.
Your answer
Follow this Question
Related Questions
Unet Spawn Prefabs When Scenes Changes 0 Answers
[UNET] Transform sycing problem,[UNET] TRANSFORMATION SYCING PROBLEMS 0 Answers
how do i sync a GameObject? HELP PLZ!! 0 Answers
How to sync RPC function Photon Network? 1 Answer
MultiPlayer Transform Sync 0 Answers