private static void StoreRuntimeInitializeClassInfo(Type type, List <string> methodNames) { RuntimeInitializeClassInfo runtimeInitializeClassInfo = new RuntimeInitializeClassInfo(); runtimeInitializeClassInfo.assemblyName = type.Assembly.GetName().Name.ToString(); runtimeInitializeClassInfo.className = type.ToString(); runtimeInitializeClassInfo.methodNames = methodNames.ToArray(); EditorAssemblies.m_RuntimeInitializeClassInfoList.Add(runtimeInitializeClassInfo); EditorAssemblies.m_TotalNumRuntimeInitializeMethods += methodNames.Count; }
private static void StoreRuntimeInitializeClassInfo(Type type, List <string> methodNames, List <RuntimeInitializeLoadType> loadTypes) { RuntimeInitializeClassInfo classInfo = new RuntimeInitializeClassInfo(); classInfo.assemblyName = type.Assembly.GetName().Name.ToString(); classInfo.className = (string)type.ToString(); classInfo.methodNames = methodNames.ToArray(); classInfo.loadTypes = loadTypes.ToArray(); m_RuntimeInitializeClassInfoList.Add(classInfo); m_TotalNumRuntimeInitializeMethods += methodNames.Count; }
private static void StoreRuntimeInitializeClassInfo(System.Type type, List <string> methodNames, List <RuntimeInitializeLoadType> loadTypes) { RuntimeInitializeClassInfo item = new RuntimeInitializeClassInfo { assemblyName = type.Assembly.GetName().Name.ToString(), className = type.ToString(), methodNames = methodNames.ToArray(), loadTypes = loadTypes.ToArray() }; m_RuntimeInitializeClassInfoList.Add(item); m_TotalNumRuntimeInitializeMethods += methodNames.Count; }
static void FindRuntimeInitializeOnLoadMethodAttributes(TypeDefinition type, string assemblyName, ref List <RuntimeInitializeClassInfo> classInfoList, ref int methodCount) { if (!type.HasMethods) { return; } foreach (var method in type.Methods) { // RuntimeInitializeOnLoadMethod only works on static methods. if (!method.IsStatic) { continue; } foreach (var attribute in method.CustomAttributes) { if (attribute.AttributeType.FullName == "UnityEngine.RuntimeInitializeOnLoadMethodAttribute") { RuntimeInitializeLoadType loadType = RuntimeInitializeLoadType.AfterSceneLoad; if (attribute.ConstructorArguments != null && attribute.ConstructorArguments.Count > 0) { loadType = (RuntimeInitializeLoadType)attribute.ConstructorArguments[0].Value; } RuntimeInitializeClassInfo classInfo = new RuntimeInitializeClassInfo(); classInfo.assemblyName = assemblyName; classInfo.className = type.FullName; classInfo.methodNames = new[] { method.Name }; classInfo.loadTypes = new[] { loadType }; classInfoList.Add(classInfo); methodCount++; } } } }