コード例 #1
0
        public override object CreateInstance(Type neosType)
        {
            Data.OverloadSetting typeOverloadSetting = GetOverload(neosType);
            if (typeOverloadSetting is null)
            {
                UniLog.Log($"Missing Component overload for {neosType.FullName}");
                return(null);
            }
            Component instance = InstanceSlot.AttachComponent(typeOverloadSetting.OverloadType ?? neosType.FullName);

            if (typeOverloadSetting.Initializer != null)
            {
                try
                {
                    //Create a new environment each time
                    LuaTable environment = LuaInstance.CreateEnvironment();
                    environment.DefineFunction("FindType", new Func <string, Type>(luaFindType));
                    //Set "Instance" to point to the component we want to modify
                    environment.SetMemberValue("Instance", instance);
                    //Compile and run the initializer script
                    LuaInstance.CompileChunk(typeOverloadSetting.Initializer, "Init.lua", new LuaCompileOptions()
                    {
                        ClrEnabled = false
                    }).Run(environment);
                }
                catch (Exception ex)
                {
                    UniLog.Log($"Unable to run initializer on {typeOverloadSetting.OverloadType}: {ex}");
                    return(null);
                }
            }
            return(instance);
        }
コード例 #2
0
 public override object CreateInstance(Type neosType)
 {
     Data.OverloadSetting typeOverloadSetting = GetOverload(neosType);
     if (typeOverloadSetting is null || typeOverloadSetting.OverloadType is null)
     {
         UniLog.Log($"Missing LogiX overload for {neosType.FullName}");
         return(null);
     }
     return(InstanceSlot.AttachComponent(typeOverloadSetting.OverloadType));
 }