Started
How do I use Started
Below are practical examples compiled from projects for learning and reference purposes
Featured Snippets
File name: PhotonConverter.cs
Copy
18 public static void RunConversion()
19 {
20 //Ask if user has made a backup.
21 int option = EditorUtility.DisplayDialogComplex("Conversion", "Attempt automatic conversion from Unity Networking to Photon Unity Networking \"PUN\"?", "Yes", "No!", "Pick Script Folder");
22 switch (option)
23 {
24 case 0:
25 break;
26 case 1:
27 return;
28 case 2:
29 PickFolderAndConvertScripts();
30 return;
31 default:
32 return;
33 }
34
35 //REAAAALY?
36 bool result = EditorUtility.DisplayDialog("Conversion", "Disclaimer: The code conversion feature is quite crude, but should do it's job well (see the sourcecode). A backup is therefore strongly recommended!", "Yes, I've made a backup: GO", "Abort");
37 if (!result)
38 {
39 return;
40 }
41 Output(EditorApplication.timeSinceStartup + " Started conversion of Unity networking -> Photon");
42
43 //Ask to save current scene (optional)
44 EditorApplication.SaveCurrentSceneIfUserWantsTo();
45
46 EditorUtility.DisplayProgressBar("Converting..", "Starting.", 0);
47
48 //Convert NetworkViews to PhotonViews in Project prefabs
49 //Ask the user if we can move all prefabs to a resources folder
50 bool movePrefabs = EditorUtility.DisplayDialog("Conversion", "Can all prefabs that use a PhotonView be moved to a Resources/ folder? You need this if you use Network.Instantiate.", "Yes", "No");
51
52
53 string[] prefabs = Directory.GetFiles("Assets/", "*.prefab", SearchOption.AllDirectories);
54 foreach (string prefab in prefabs)
55 {
56 EditorUtility.DisplayProgressBar("Converting..", "Object:" + prefab, 0.6f);
57
58 Object[] objs = (Object[])AssetDatabase.LoadAllAssetsAtPath(prefab);
59 int converted = 0;
60 foreach (Object obj in objs)
61 {
62 if (obj != null && obj.GetType() == typeof(GameObject))
63 converted += ConvertNetworkView(((GameObject)obj).GetComponents
64 }
65 if (movePrefabs && converted > 0)
66 {
67 //This prefab needs to be under the root of a Resources folder!
68 string path = prefab.Replace("\\", "/");
69 int lastSlash = path.LastIndexOf("/");
70 int resourcesIndex = path.LastIndexOf("/Resources/");
71 if (resourcesIndex != lastSlash - 10)
72 {
73 if (path.Contains("/Resources/"))
74 {
75 Debug.LogWarning("Warning, prefab [" + prefab + "] was already in a resources folder. But has been placed in the root of another one!");
76 }
77 //This prefab NEEDS to be placed under a resources folder
78 string resourcesFolder = path.Substring(0, lastSlash) + "/Resources/";
79 EnsureFolder(resourcesFolder);
80 string newPath = resourcesFolder + path.Substring(lastSlash + 1);
81 string error = AssetDatabase.MoveAsset(prefab, newPath);
82 if (error != "")
83 Debug.LogError(error);
84 Output("Fixed prefab [" + prefab + "] by moving it into a resources folder.");
85 }
86 }
87 }
88
89 //Convert NetworkViews to PhotonViews in scenes
90 string[] sceneFiles = Directory.GetFiles("Assets/", "*.unity", SearchOption.AllDirectories);
91 foreach (string sceneName in sceneFiles)
92 {
93 EditorApplication.OpenScene(sceneName);
94 EditorUtility.DisplayProgressBar("Converting..", "Scene:" + sceneName, 0.2f);
95
96 int converted2 = ConvertNetworkView((NetworkView[])GameObject.FindObjectsOfType(typeof(NetworkView)), true);
97 if (converted2 > 0)
98 {
99 //This will correct all prefabs: The prefabs have gotten new components, but the correct ID's were lost in this case
100 PhotonViewHandler.HierarchyChange(); //TODO: most likely this is triggered on change or on save
101
102 Output("Replaced " + converted2 + " NetworkViews with PhotonViews in scene: " + sceneName);
103 EditorApplication.SaveScene(EditorApplication.currentScene);
104 }
105
106 }
107
108 //Convert C#/JS scripts (API stuff)
109 List
110
111 EditorUtility.DisplayProgressBar("Converting..", "Scripts..", 0.9f);
112 ConvertScripts(scripts);
113
114 Output(EditorApplication.timeSinceStartup + " Completed conversion!");
115 EditorUtility.ClearProgressBar();
116
117 EditorUtility.DisplayDialog("Completed the conversion", "Don't forget to add \"PhotonNetwork.ConnectWithDefaultSettings();\" to connect to the Photon server before using any multiplayer functionality.", "OK");
118 }
File name: NetworkAdapter.cs
Copy
122 public void SendNewGameStarted()
123 {
124 if (PhotonNetwork.room != null && PhotonNetwork.room.playerCount == 2)
125 {
126 photonView.RPC("OnNewGameStart", PhotonTargets.OthersBuffered);
127 }
128 }
File name: NetworkAdapter.cs
Copy
138 private void Awake()
139 {
140 OnBeginConnectingSignal = new Signal();
141 OnConnectedToMasterSignal = new Signal();
142 OnDisconnectedFromMasterSignal = new Signal();
143 OnConnectionFailSignal = new Signal
144 OnJoinedRoomSignal = new Signal();
145 OnAllPlayersConnectedSignal = new Signal();
146 OnRemoteBoardChangeSignal = new Signal
147 OnNewGameStartedSignal = new Signal();
148
149 ServiceLocator.AddService
150 }
File name: NetworkAdapter.cs
Copy
202 private void OnNewGameStart()
203 {
204 OnNewGameStartedSignal.Dispatch();
205 }
File name: Result.cs
Copy
23 protected override void Start()
24 {
25 base.Start();
26
27 GameService.OnGameResultSignal.AddListener(OnGameResult);
28 NetworkService.OnNewGameStartedSignal.AddListener(OnNewGame);
29 NetworkService.OnDisconnectedFromMasterSignal.AddListener(Hide);
30 }
File name: Result.cs
Copy
32 protected override void OnDestroy()
33 {
34 base.OnDestroy();
35
36 GameService.OnGameResultSignal.RemoveListener(OnGameResult);
37 NetworkService.OnNewGameStartedSignal.RemoveListener(OnNewGame);
38 NetworkService.OnDisconnectedFromMasterSignal.RemoveListener(Hide);
39 }
File name: Game.cs
Copy
40 public void NewGame()
41 {
42 board.gameObject.SetActive(true);
43 board.Clear();
44 board.SetPlayer(Seed.Cross);
45 CurrentState = GameState.Playing;
46
47 if (NetworkService.IsConnected)
48 {
49 if (NetworkService.IsMaster)
50 {
51 Player1.Name = NetworkService.PlayerName;
52 Player2.Name = NetworkService.OpponentName;
53
54 Player1.Type = Seed.Cross;
55 Player2.Type = Seed.Nought;
56 board.SetPlayer(Seed.Cross);
57
58 NetworkService.SendNewGameStarted();
59 }
60 else
61 {
62 Player1.Name = NetworkService.OpponentName;
63 Player2.Name = NetworkService.PlayerName;
64
65 Player1.Type = Seed.Nought;
66 Player2.Type = Seed.Cross;
67 board.SetPlayer(Seed.Empty);
68 }
69 }
70
71 OnGameStartSignal.Dispatch(this);
72 }
Started 125 lượt xem
Gõ tìm kiếm nhanh...