Activator
How do I use Activator
Below are practical examples compiled from projects for learning and reference purposes
Featured Snippets
File name: PingCloudRegions.cs
Copy
118 public IEnumerator PingSocket(Region region)
119 {
120 region.Ping = Attempts*MaxMilliseconsPerPing;
121
122 this.PingsRunning++; // TODO: Add try-catch to make sure the PingsRunning are reduced at the end and that the lib does not crash the app
123 PhotonPing ping;
124 //Debug.Log("PhotonHandler.PingImplementation " + PhotonHandler.PingImplementation);
125 if (PhotonHandler.PingImplementation == typeof(PingNativeDynamic))
126 {
127 Debug.Log("Using constructor for new PingNativeDynamic()"); // it seems on android, the Activator can't find the default Constructor
128 ping = new PingNativeDynamic();
129 }
130 else
131 {
132 ping = (PhotonPing)Activator.CreateInstance(PhotonHandler.PingImplementation);
133 }
134
135 //Debug.Log("Ping is: " + ping + " type " + ping.GetType());
136
137 float rttSum = 0.0f;
138 int replyCount = 0;
139
140
141 // PhotonPing.StartPing() requires a plain IP address without port (on all but Windows 8 platforms).
142 // So: remove port and do the DNS-resolving if needed
143 string cleanIpOfRegion = region.HostAndPort;
144 int indexOfColon = cleanIpOfRegion.LastIndexOf(':');
145 if (indexOfColon > 1)
146 {
147 cleanIpOfRegion = cleanIpOfRegion.Substring(0, indexOfColon);
148 }
149 cleanIpOfRegion = ResolveHost(cleanIpOfRegion);
150 //Debug.Log("Resolved and port-less IP is: " + cleanIpOfRegion);
151
152
153 for (int i = 0; i < Attempts; i++)
154 {
155 bool overtime = false;
156 Stopwatch sw = new Stopwatch();
157 sw.Start();
158
159 try
160 {
161 ping.StartPing(cleanIpOfRegion);
162 }
163 catch (Exception e)
164 {
165 Debug.Log("catched: " + e);
166 this.PingsRunning--;
167 break;
168 }
169
170
171 while (!ping.Done())
172 {
173 if (sw.ElapsedMilliseconds >= MaxMilliseconsPerPing)
174 {
175 overtime = true;
176 break;
177 }
178 yield return 0; // keep this loop tight, to avoid adding local lag to rtt.
179 }
180 int rtt = (int)sw.ElapsedMilliseconds;
181
182
183 if (IgnoreInitialAttempt && i == 0)
184 {
185 // do nothing.
186 }
187 else if (ping.Successful && !overtime)
188 {
189 rttSum += rtt;
190 replyCount++;
191 region.Ping = (int)((rttSum) / replyCount);
192 //Debug.Log("region " + region.Code + " RTT " + region.Ping + " success: " + ping.Successful + " over: " + overtime);
193 }
194
195 yield return new WaitForSeconds(0.1f);
196 }
197
198 this.PingsRunning--;
199
200 //Debug.Log("this.PingsRunning: " + this.PingsRunning + " this debug: " + ping.DebugString);
201 yield return null;
202 }
File name: ImportTiled2Unity.Mesh.cs
Copy
298 private IList299 {
300 // Report an error for ICustomTiledImporter classes that don't have the CustomTiledImporterAttribute
301 var errorTypes = from a in AppDomain.CurrentDomain.GetAssemblies()
302 from t in a.GetTypes()
303 where typeof(ICustomTiledImporter).IsAssignableFrom(t)
304 where !t.IsAbstract
305 where Attribute.GetCustomAttribute(t, typeof(CustomTiledImporterAttribute)) == null
306 select t;
307 foreach (var t in errorTypes)
308 {
309 Debug.LogError(String.Format("ICustomTiledImporter type '{0}' is missing CustomTiledImporterAttribute", t));
310 }
311
312 // Find all the types with the CustomTiledImporterAttribute, instantiate them, and give them a chance to customize our prefab
313 var types = from a in AppDomain.CurrentDomain.GetAssemblies()
314 from t in a.GetTypes()
315 where typeof(ICustomTiledImporter).IsAssignableFrom(t)
316 where !t.IsAbstract
317 from attr in Attribute.GetCustomAttributes(t, typeof(CustomTiledImporterAttribute))
318 let custom = attr as CustomTiledImporterAttribute
319 orderby custom.Order
320 select t;
321
322 var instances = types.Select(t => (ICustomTiledImporter)Activator.CreateInstance(t));
323 return instances.ToList();
324 }
Activator 122 lượt xem
Gõ tìm kiếm nhanh...