/// <summary> /// Instantiate's a NetworkedObject given it's NetworkedPrefab /// </summary> /// <param name="netPrefab"></param> /// <param name="pos"></param> /// <param name="rot"></param> /// <returns></returns> public static NetworkedObject Instantiate(NetworkedPrefab netPrefab, Vector3?pos = null, Quaternion?rot = null) { //Only do this check on the lowest level method overload if (!NetworkingManager.singleton.isServer) { return(null); } GameObject obj = netPrefab.prefab; obj = GameObject.Instantiate( obj, pos ?? obj.transform.position, rot ?? obj.transform.rotation ); NetworkedObject netObj = obj.GetComponent <NetworkedObject>(); if (netObj == null) { throw new System.Exception($"Network prefab does have a 'NetworkedObject' component on root"); } netObj.Spawn(); return(netObj); }
public static void PopulateNetworkedPrefabs() { #if UNITY_EDITOR Instance._networkedPrefabs.Clear(); GameObject[] results = Resources.LoadAll <GameObject>("Init"); foreach (var result in results) { if (result.GetComponent <PhotonView>() != null) { var path = AssetDatabase.GetAssetPath(result); var newPrefab = new NetworkedPrefab(result, path); Instance._networkedPrefabs.Add(newPrefab); Debug.Log($"Instantiated: {newPrefab.Prefab.name}, {newPrefab.Path}"); } } #endif }