Unity中通过字符串获得Type.GetType

【Unity】反射:编辑器中通过类名获取Type 做配置表工具的时候,用到通过类名获取类的Type: Type type = Type.GetType(_className) 发现一个问题,在Unity运行代码中创建一个类:通过GetType能正常获取该类的Type,但是在编辑器代码中,Get出来的却是null。 猜想在当前的Assembly中没有该类。 Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly(); 在两个代码中获取当前的程序集,发现是两个不同的. 阅读详情

在Unity中通过System.Type.GetType(“类”) 不能直接使用。

我们可以通过下面的方式来获得

	public static System.Type GetTypeByName(string name)
    {
        foreach (Assembly assembly in System.AppDomain.CurrentDomain.GetAssemblies())
        {
            foreach (System.Type type in assembly.GetTypes())
            {
                if (type.Name == name)
                    return type;
            }
        }

        return null;
    }

使用的时候可以

		var type1 = GetTypeByName("MB3_TextureBaker");
        Object[] bakers1 = GameObject.FindObjectsOfType(type1, true);
        for (int i = 0; i < bakers1.Length; i++)
        {
            var ob = bakers1[i];
            EditorUtility.SetDirty(ob);
            Debug.Log("Deleting TextureBaker -> " + bakers1[i].name);
            GameObject.DestroyImmediate(bakers1[i]);
            
            all++;
        }

这里有个缺陷就是获取到第一个类型相同的就返回了,可以自行处理。

Unity学习(C#)——反射和特性(Type、Assemly、Conditional、DebuggerStepThrough) 反射和特性(Type类) 每一个类对应一个Type对象,这个type对象储存了这个类 有哪些方法和数据、成员。 1.Type基本功能 获取类名:type.Name 获取命名空间:type.Namespace 获取程序集类:type.Assembly 获取公共字段:type.GetFields() 返回公共属性type.GetProperties() 获取所有的方法:type.GetMethods() class Program { static void Main(string[] 阅读详情

相关推荐

Unity开发中C#反射的核心原理、性能优化与实战应用

C#反射是.NET框架提供的一项核心技术,它允许程序在运行时动态地探查和操作自身的元数据。其原理是通过System.Type、Assembly等类,获取并分析程序集、类型及其成员(如方法、属性)的信息。这项技术的核心价值在于打破了编译时的静态绑定限制,为构建高度灵活、可配置的软件架构提供了可能。在工程实践中,反射广泛应用于依赖注入框架、插件系统、数据驱动的动态逻辑以及自动化工具链开发等场景。特别是在Unity游戏开发中,合理运用反射可以高效实现诸如动态组件添加、UI事件自动绑定、自定义序列化以及行为树节点加

weixin_30345577的博客 315

Unity中获取类的Type的两种方式

假设在Assembly-CSharp项目中有一个类,类名为Class1,命名空间为Project 1.在Assembly-CSharp的项目中可以直接通过Type.GetType("Project.Class1");来获取该类的Type; 2.如果是在Assembly-CSharp-Editor中的项目那么可以通过System.Reflection.Assembly.Load("Assembl...

EnTaroAdun 7074

Unity性能优化:反射机制的性能瓶颈分析与高效缓存策略

在C#编程中,反射是一种强大的运行时类型信息获取机制,允许程序在运行时动态查询和操作类型、方法和属性。其原理是通过查询程序集元数据、进行权限验证和动态绑定来实现灵活性,但这种动态性绕过了编译时优化,导致性能开销显著增加。从技术价值看,反射虽然提供了极高的灵活性,支持插件系统、序列化和依赖注入等高级功能,但在性能敏感场景如游戏开发中可能成为瓶颈。在应用场景上,反射常见于Unity开发中的动态组件获取、事件系统、序列化框架和第三方插件集成。针对反射调用带来的性能问题,开发者可以通过缓存Type和MemberIn

weixin_30271335的博客 334

unity中的C#反射笔记

方式一:Type.GetType("类型全名");适合于类型的名称已知. 方式二:obj.GetTypel);适合于类型名未知,类型未知,存在已有对象. 方式三:typeof(类型). 适合于已知类型. 方式四:Assembly.Load("XX).GetType("名字");适合于类型在另一个程序集中 动态创建对象. Activator.Createlnstance(string程序集名称,s...

鱼子酱F的博客 478

【从零开始入门unity游戏开发之——C#篇39】C#反射使用——Type 类、Assembly 类、Activator 类操作程序集

C#反射使用——Type 类、Assembly 类、Activator 类操作程序集

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2748

从‘平行’到‘鱼骨’:手把手拆解AlGaN/GaN HEMT多栅指结构的布局优化实战

本文深入探讨了AlGaN/GaN HEMT多栅指结构的布局优化,从传统的平行栅结构到创新的鱼骨栅结构,详细解析了如何通过优化信号路径和热管理提升功率器件的性能。文章结合实测数据和EDA工具,展示了鱼骨栅结构在相位一致性、热阻和版图利用率方面的显著改进,为射频功率放大器设计提供了实用指导。

weixin_27061475的博客 443

Unity通过字符串添加组件

之前旧版的Unity提供了AddComponent(string name)的方法来提供字符串添加组件,可是由于性能不高被官方废弃了,那么现在如何使用字符串来添加组件呢? 可是由于需求难免会有需要通过字符串来添加组件,以达到程序灵活性高的目的,当然Unity官方还是明白的,所以提供了public Component AddComponent(Type componentType)的方法来解决。...

漩子——二进制看世界 2571

【硬件相关】IB网与以太网核心技术解析及高性能网络部署指南

本文深入解析了IB网与以太网的核心技术差异,包括协议栈、流量控制机制及硬件架构,并提供了高性能网络部署的实战指南。通过对比测试和调优案例,展示了IB网在低延迟和高负载下的优势,以及混合组网中的创新应用,助力超算集群和高效网络部署。

weixin_29311017的博客 101

Unity通过组件名称字符串添加脚本

通过Type.GetType(string typeName)来得到字符串对应的Type。 Type.GetType(typeName)能获取到自定义类的类型,但是获取Unity的组件不行。 例如Type.GetType(“Rigidbody”)值为null,其实是少了程序集。 string qualifiedName = typeof(Rigidbody).AssemblyQualifiedName; ty 获取Unity的组件程序集全名,再通过Type.GetType()得到的就不为null了。

加载中....... 1786

Backtrader 文档学习- 整体架构功能分析理解

backtrader是一个用于开发和执行交易策略的Python框架。它提供了一套完整的工具和功能,使得用户可以方便地进行策略回测、实盘交易以及数据分析。backtrader的入口为Cerebro类,该类将所有输入(Data Feeds)、策略 (Strategy)、观察者(Observers)、策略评估(Analyzers) 、经纪人(Broker)、订单(Order)、交易(Trade)和日志记录(Writers)整合起来,实现回测以及交易,并返回结果和图表。

六月闻君 6328

常见的十大量化投资策略(附源码)

量化投资策略是利用量化的方法,进行金融市场的分析、判断和交易的策略、算法的总称。著名的量化投资策略有以下10种(注:策略源码模板不能直接用于实盘交易,仅供探讨交流) 01、海龟交易策略 海龟交易策略是一套非常完整的趋势跟随型的自动化交易策略。这个复杂的策略在入场条件、仓位控制、资金管理、止损止盈等各个环节,都进行了详细的设计,这基本上可以作为复杂交易策略设计和开发的模板。 海龟交易策略源码:https://www.myquant.cn/docs/python_strategyies/110 0.

小壁虎的春天 2万+

C#中使用反射将字符串转换为类

在自己用unity做demo的过程中,想要从配置表中将UI界面的预制体加载到场景中,并且挂载对应的类,由于配置表中需要挂载的类是通过字符串配置的,因此想到了以反射的形式进行添加,做了以下尝试: public class TestReflection : MonoBehaviour { // Start is called before the first frame updat...

l17768346260的博客 6957

工业数据采集实战:用open62541库读写PLC的OPC UA节点(避坑指南)

本文详细介绍了如何使用open62541库实现工业PLC的OPC UA节点数据采集,涵盖环境搭建、节点读写优化及生产环境故障排查。通过订阅模式和多节点读写技术,显著提升数据采集效率与稳定性,适用于智能制造和工业物联网场景。

weixin_30598225的博客 400

Unity反射优化实战:缓存Type与MethodInfo提升百倍性能

反射是C#与Unity开发中的核心技术,它允许程序在运行时动态获取类型信息并调用方法,为插件系统、序列化、依赖注入等场景提供了极大的灵活性。然而,其原理决定了性能开销巨大:每次反射调用都涉及元数据查找、安全验证及可能的JIT编译,尤其是MethodInfo.Invoke会产生显著的装箱拆箱损耗与GC压力。在游戏开发等性能敏感领域,优化反射对保障帧率稳定、降低CPU与内存开销具有关键价值。本文聚焦Unity项目中的高频反射场景,通过系统化缓存Type对象、预编译委托等工程实践,将反射调用性能提升数十至数百倍,

cnracht8153的博客 407

EDEM-FLUENT耦合报错几大原因总结(持续更新)

EDEM-FLUENT耦合报错几大原因总结(持续更新)

zheaa的博客 2762

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Unity C#使用反射,利用字符串作为泛型参数调用泛型方法

参考https://gameinstitute.qq.com/community/detail/122847 本身想做个通过字符串名字添加组件的功能,但是实现不了,参考了文章写了下面的代码 是通过MakeGenericMethod方法,将type转换为泛型参数,然后通过反射直接调用AddComponent MethodInfo mi = typeof(GameObject).GetMethod(“...

zxc244603934的博客 1029

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

新版Unity运行时添加脚本的方法

老版:obj.AddComponent("MyScript");//已过时 新版:obj.AddComponent(System.Type.GetType("MyScript"));//当然还有其它方法,我这里例举我认为最简洁的方法。

sinat_38483638的博客 3974

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Unity根据字符串拿到类名并调用方法和属性(反射机制)

例如:我有一个变量string 我想通过这个sting 去拿到对应的类,可以调用这个类的方法拿到这个类的属性,可以这样写

weixin_39543044的博客 6851

unity常见面试题

接口是一种完全抽象的类型,它只定义了成员的签名,但没有提供成员的实现。接口定义了对象应该具有的方法、属性和事件。抽象类是一种包含了抽象成员(方法、属性、索引器、事件)的类,它可以包含抽象成员和非抽象成员的实现。抽象类可以包含方法的实现,也可以包含字段和构造函数等。

yasin的博客 1万+

Unity中使用C#通过组件类型名来添加组件的方法参考

Unity中使用C#通过组件类型名来添加组件的方法参考

ttod的博客 677

Unity代码剥离优化:Managed Stripping Level配置与风险规避指南

在Unity项目开发中,代码优化是提升应用性能的关键环节。托管代码剥离技术通过静态分析移除未使用的代码,能有效减小应用包体大小,尤其适用于移动端和WebGL平台。其核心原理基于IL链接器的根标记与依赖分析机制,通过识别运行时入口点来保留必要代码。这项技术的工程价值在于平衡包体体积与运行时稳定性,但激进策略可能导致反射调用、序列化类等动态代码被意外移除。在实际应用场景中,开发者需根据项目需求选择Low、Medium或High剥离级别,并通过Preserve属性、link.xml配置等方式保留关键代码。本文聚焦

weixin_34216196的博客 351

unity中根据字符串,拿到类名和属性名,获取其属性值和修改属性值

unity中根据字符串,拿到类名和属性名,获取其属性值和修改属性值。网上看了半天要么不清不楚,要么不是缺胳膊少腿的。最后还是自己研究明白的。

weixin_44801342的博客 1882

Unity C#反射原理与性能优化实战:从数据驱动到编辑器工具

反射是.NET运行时提供的核心技术,允许程序在运行时动态探查、创建和操作类型信息,其原理基于程序集的元数据查询。这项技术的核心价值在于实现高度灵活、可扩展的架构设计,尤其适用于需要解耦和动态组装的场景。在Unity开发中,反射广泛应用于数据驱动的配置系统、编辑器工具扩展、插件架构和动态事件回调等实践。通过缓存反射对象、使用委托封装或表达式树编译等优化手段,可以显著降低性能开销。本文结合Unity IL2CPP环境特性,深入探讨了反射在编辑器工具链构建与运行时动态系统中的应用,帮助开发者在灵活性与性能间取得平

congji3817的博客 410
上一篇: Centos部署KBengine
下一篇: Unity 新输入系统InputAction设置按键的阈值
Thinbug
博客等级 码龄22年 2万+粉丝 187原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thinbug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值