在unity 脚本里自动创建单例对象

本文介绍了如何在Unity中使用SingletonCreator来自动创建单例对象,详细讲解了GetConstructors方法及其参数,以及如何通过BindingFlags筛选构造函数。同时,提到了ISingleton接口和SingletonProperty类用于实现单例的创建和访问。通过示例代码DesService.cs说明了如何在项目中便捷地调用单例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文源码来自 凉鞋大大的 QFramework

首先我们需要一个对象构造器

SingletonCreator 

using System;
    using System.Reflection;

    public static class SingletonCreator
    {
        public static T CreateSingleton<T>() where T : class, ISingleton
        {
            // 获取私有构造函数
            var ctors = typeof(T).GetConstructors(BindingFlags.Instance | BindingFlags.NonPublic);
            
            // 获取无参构造函数
            var ctor = Array.Find(ctors, c => c.GetParameters().Length == 0);

            if (ctor == null)
            {
                throw new Exception("Non-Public Constructor() not found! in " + typeof(T));
            }

            // 通过构造函数,创建实例
            var retInstance = ctor.Invoke(null) as T;
            retInstance.OnSingletonInit();

            return retInstance;
        }
    }

1)GetConstructors() : 返回为当前Type 定义的所有公共构造函数

返回值为 System.Reflection.ConstructorInfo[] GetConstructors();

2)ConstructorInfo 对象的数组,表示当前 Type 定义的所有公共实例构造函数,但不包括类型初始值设定项(静态构造函数)。 如果没有为当前 Type 定义公共实例构造函数,或者当前 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值