コード例 #1
0
ファイル: SpawnManager.cs プロジェクト: SirHall/MLAPI
        /// <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);
        }
コード例 #2
0
    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
    }