千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  应聘面试  >  Unity面试题  > unity面试题合集(七)

unity面试题合集(七)

来源:千锋教育
发布人:wjy
时间: 2022-07-14 09:41:00 1657762860

  ⼀.值类型的变量直接存储数据,⽽引⽤类型的变量持有的是数据的引⽤,数据存储在数据堆中。

  值类型(value type):byte,short,int,long,float,double,decimal,char,bool 和 struct 统称为值类型。值类型变量声明后,不管是否已经赋值,编译器为其分配内存。

  引⽤类型(reference type):string 和 class统称为引⽤类型。当声明⼀个类时,只在栈中分配⼀⼩⽚内存⽤于容纳⼀个地址,⽽此时并没有为其分配堆上的内存空间。当使⽤ new 创建⼀个类的实例时,分配堆上的空间,并把堆上空间的地址保存到栈上分配的⼩⽚空间中。值类型的实例通常是在线程栈上分配的(静态分配),但是在某些情形下可以存储在堆中。引⽤类型的对象总是在进程堆中分配(动态分配)。

  不同点:

  1)范围⽅⾯ C#的值类型包括:结构体(数值类型、bool型、⽤户定义的结构体),枚举,可空类型。C#的引⽤类型包括:数组,⽤户定义的类、接⼝、委托,object,字符串。

  2)内存分配⽅⾯ 数组的元素不管是引⽤类型还是值类型,都存储在托管堆上。【注意:托管堆和进程堆,是⼀种么?另外:线程堆栈(Thread Stack)和托管堆(Managed Heap),⽇后会再单独涉及】 引⽤类型在栈中存储⼀个引⽤,其实际的存储位置位于托管堆。简称引⽤类型部署在托管推上。⽽值类型总是分配在它声明的地⽅:作为字段时,跟随其所属的变量(实 例)存储;作为局部变量时,存储在栈上。(栈的内存是⾃动释放的,堆内存是.NET中会由GC来⾃动释放)

unity面试题合集

  二、如何避免

  减少new产⽣对象的次数 使⽤公⽤的对象,即静态成员Static,但要谨慎使⽤ 将String换成StringBuilder拼接字符串,string容易导致内存泄露使⽤对象池GamObject Pool在字符串暂存池中的是不会被GC的避免使⽤foreach,尽量使⽤for循环

  三.接⼝是指定⼀组函数成员⽽不实现他们的引⽤类型。所以只能类和结构来实现接⼝,在继承该接⼝的类⾥⾯要实现接⼝的所有⽅法。

  四.输出结果:AB

  五.Assembly.LoadFrom()加载dll

  assembly.GetType(“ClassA”);

  type.GetMethod(“MethodA”);

  六.unity不⽀持多线程,但可以使⽤多线程的类库进⾏多线程编程

  Unity使⽤多线程注意:

  变量都是共享的(都能指向相同的内存地址)UnityEngine的API不能在分线程运⾏ UnityEngine定义的基本结构(int,float,Struct定义的数据类型)可以在分线程计算,如 Vector3(Struct)可以,但Texture2d(class,根⽗类为Object)不可以。 UnityEngine定义的基本类型的函数可以在分线程运⾏Debug.Log()⽀持在⼦线程中调⽤

  更多关于“unity游戏开发培训”的问题,欢迎咨询千锋教育在线名师。千锋教育多年办学,课程大纲紧跟企业需求,更科学更严谨,每年培养泛IT人才近2万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT