Dictionary









How do I use Dictionary
Below are practical examples compiled from projects for learning and reference purposes

Featured Snippets


File name: AccountService.cs Copy
173     private void ParseResult(string result)
174     {
175         if (string.IsNullOrEmpty(result))
176         {
177             this.Message = "Server's response was empty. Please register through account website during this service interruption.";
178             return;
179         }
180
181         Dictionary values = JsonConvert.DeserializeObject>(result);
182         if (values == null)
183         {
184             this.Message = "Service temporarily unavailable. Please register through account website.";
185             return;
186         }
187
188         int returnCodeInt = -1;
189         string returnCodeString = string.Empty;
190         string message;
191
192         values.TryGetValue("ReturnCode", out returnCodeString);
193         values.TryGetValue("Message", out message);
194         int.TryParse(returnCodeString, out returnCodeInt);
195
196         this.ReturnCode = returnCodeInt;
197         if (returnCodeInt == 0)
198         {
199             // returnCode == 0 means: all ok. message is new AppId
200             this.AppId = message;
201         }
202         else
203         {
204             // any error gives returnCode != 0
205             this.AppId = string.Empty;
206             this.Message = message;
207         }
208     }
File name: PhotonViewHandler.cs Copy
25     internal static void HierarchyChange()
26     {
27         if (Application.isPlaying)
28         {
29             //Debug.Log("HierarchyChange ignored, while running.");
30             CheckSceneForStuckHandlers = true; // done once AFTER play mode.
31             return;
32         }
33
34         if (CheckSceneForStuckHandlers)
35         {
36             CheckSceneForStuckHandlers = false;
37             PhotonNetwork.InternalCleanPhotonMonoFromSceneIfStuck();
38         }
39
40         HashSet pvInstances = new HashSet();
41         HashSet usedInstanceViewNumbers = new HashSet();
42         bool fixedSomeId = false;
43
44         //// the following code would be an option if we only checked scene objects (but we can check all PVs)
45         //PhotonView[] pvObjects = GameObject.FindSceneObjectsOfType(typeof(PhotonView)) as PhotonView[];
46         //Debug.Log("HierarchyChange. PV Count: " + pvObjects.Length);
47
48         string levelName = Application.loadedLevelName;
49         #if UNITY_EDITOR
50         levelName = System.IO.Path.GetFileNameWithoutExtension(EditorApplication.currentScene);
51         #endif
52         int minViewIdInThisScene = PunSceneSettings.MinViewIdForScene(levelName);
53         //Debug.Log("Level '" + Application.loadedLevelName + "' has a minimum ViewId of: " + minViewIdInThisScene);
54
55         PhotonView[] pvObjects = Resources.FindObjectsOfTypeAll(typeof(PhotonView)) as PhotonView[];
56
57         foreach (PhotonView view in pvObjects)
58         {
59             // first pass: fix prefabs to viewID 0 if they got a view number assigned (cause they should not have one!)
60             if (EditorUtility.IsPersistent(view.gameObject))
61             {
62                 if (view.viewID != 0 || view.prefixBackup != -1 || view.instantiationId != -1)
63                 {
64                     Debug.LogWarning("PhotonView on persistent object being fixed (id and prefix must be 0). Was: " + view);
65                     view.viewID = 0;
66                     view.prefixBackup = -1;
67                     view.instantiationId = -1;
68                     EditorUtility.SetDirty(view);
69                     fixedSomeId = true;
70                 }
71             }
72             else
73             {
74                 // keep all scene-instanced PVs for later re-check
75                 pvInstances.Add(view);
76             }
77         }
78
79         Dictionary idPerObject = new Dictionary();
80
81         // second pass: check all used-in-scene viewIDs for duplicate viewIDs (only checking anything non-prefab)
82         // scene-PVs must have user == 0 (scene/room) and a subId != 0
83         foreach (PhotonView view in pvInstances)
84         {
85             if (view.ownerId > 0)
86             {
87                 Debug.Log("Re-Setting Owner ID of: " + view);
88             }
89             view.ownerId = 0; // simply make sure no owner is set (cause room always uses 0)
90             view.prefix = -1; // TODO: prefix could be settable via inspector per scene?!
91
92             if (view.viewID != 0)
93             {
94                 if (view.viewID < minViewIdInThisScene || usedInstanceViewNumbers.Contains(view.viewID))
95                 {
96                     view.viewID = 0; // avoid duplicates and negative values by assigning 0 as (temporary) number to be fixed in next pass
97                 }
98                 else
99                 {
100                     usedInstanceViewNumbers.Add(view.viewID); // builds a list of currently used viewIDs
101
102                     int instId = 0;
103                     if (idPerObject.TryGetValue(view.gameObject, out instId))
104                     {
105                         view.instantiationId = instId;
106                     }
107                     else
108                     {
109                         view.instantiationId = view.viewID;
110                         idPerObject[view.gameObject] = view.instantiationId;
111                     }
112                 }
113             }
114
115         }
116
117         // third pass: anything that's now 0 must get a new (not yet used) ID (starting at 0)
118         int lastUsedId = (minViewIdInThisScene > 0) ? minViewIdInThisScene - 1 : 0;
119
120         foreach (PhotonView view in pvInstances)
121         {
122             if (view.viewID == 0)
123             {
124                 // Debug.LogWarning("setting scene ID: " + view.gameObject.name + " ID: " + view.subId.ID + " scene ID: " + view.GetSceneID() + " IsPersistent: " + EditorUtility.IsPersistent(view.gameObject) + " IsSceneViewIDFree: " + IsSceneViewIDFree(view.subId.ID, view));
125                 int nextViewId = PhotonViewHandler.GetID(lastUsedId, usedInstanceViewNumbers);
126
127                 view.viewID = nextViewId;
128
129                 int instId = 0;
130                 if (idPerObject.TryGetValue(view.gameObject, out instId))
131                 {
132                     Debug.Log("Set inst ID");
133                     view.instantiationId = instId;
134                 }
135                 else
136                 {
137                     view.instantiationId = view.viewID;
138                     idPerObject[view.gameObject] = nextViewId;
139                 }
140
141                 //// when using the Editor's serialization (view.subId in this case), this is not needed, it seems
142                 //PrefabUtility.RecordPrefabInstancePropertyModifications(view);
143
144                 lastUsedId = nextViewId;
145                 EditorUtility.SetDirty(view);
146                 fixedSomeId = true;
147             }
148         }
149
150
151         if (fixedSomeId)
152         {
153             //Debug.LogWarning("Some subId was adjusted."); // this log is only interesting for Exit Games
154         }
155     }
File name: Extensions.cs Copy
61     public static void Merge(this IDictionary target, IDictionary addHash)
62     {
63         if (addHash == null || target.Equals(addHash))
64         {
65             return;
66         }
67
68         foreach (object key in addHash.Keys)
69         {
70             target[key] = addHash[key];
71         }
72     }
File name: Extensions.cs Copy
82     public static void MergeStringKeys(this IDictionary target, IDictionary addHash)
83     {
84         if (addHash == null || target.Equals(addHash))
85         {
86             return;
87         }
88
89         foreach (object key in addHash.Keys)
90         {
91             // only merge keys of type string
92             if (key is string)
93             {
94                 target[key] = addHash[key];
95             }
96         }
97     }
File name: Extensions.cs Copy
105     public static string ToStringFull(this IDictionary origin)
106     {
107         return SupportClass.DictionaryToString(origin, false);
108     }
File name: Extensions.cs Copy
119     public static Hashtable StripToStringKeys(this IDictionary original)
120     {
121         Hashtable target = new Hashtable();
122         foreach (DictionaryEntry pair in original)
123         {
124             if (pair.Key is string)
125             {
126                 target[pair.Key] = pair.Value;
127             }
128         }
129
130         return target;
131     }
File name: Extensions.cs Copy
139     public static void StripKeysWithNullValues(this IDictionary original)
140     {
141         object[] keys = new object[original.Count];
142         //original.Keys.CopyTo(keys, 0);
143         int i = 0;
144         foreach (object k in original.Keys)
145         {
146             keys[i++] = k;
147         }
148
149         for (int index = 0; index < keys.Length; index++)
150         {
151             var key = keys[index];
152             if (original[key] == null)
153             {
154                 original.Remove(key);
155             }
156         }
157     }
File name: LoadbalancingPeer.cs Copy
29         private readonly Dictionary opParameters = new Dictionary(); // used in OpRaiseEvent() (avoids lots of new Dictionary() calls)
31         public LoadbalancingPeer(IPhotonPeerListener listener, ConnectionProtocol protocolType) : base(listener, protocolType)
32         {
33         }
File name: LoadbalancingPeer.cs Copy
35         public virtual bool OpGetRegions(string appId)
36         {
37             Dictionary parameters = new Dictionary();
38             parameters[(byte)ParameterCode.ApplicationId] = appId;
39
40             return this.OpCustom(OperationCode.GetRegions, parameters, true, 0, true);
41         }
File name: LoadbalancingPeer.cs Copy
48         public virtual bool OpJoinLobby(TypedLobby lobby)
49         {
50             if (this.DebugOut >= DebugLevel.INFO)
51             {
52                 this.Listener.DebugReturn(DebugLevel.INFO, "OpJoinLobby()");
53             }
54
55             Dictionary parameters = null;
56             if (lobby != null && !lobby.IsDefault)
57             {
58                 parameters = new Dictionary();
59                 parameters[(byte)ParameterCode.LobbyName] = lobby.Name;
60                 parameters[(byte)ParameterCode.LobbyType] = (byte)lobby.Type;
61             }
62
63             return this.OpCustom(OperationCode.JoinLobby, parameters, true);
64         }

Dictionary 104 lượt xem

Gõ tìm kiếm nhanh...