全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  应聘面试  >  Unity面试题

unity面试题合集(七)

发布时间:2022-07-14 09:41:00
发布人:wjy

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

  值类型(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万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。

相关文章

华为外包unity面试题

2023-07-25

常见Unity程序员面试题

2023-07-21

Unity面试题及答案

2023-07-20

Unity面试题及答案(十四)

2022-10-31

Unity面试题及答案(十三)

2022-10-31

Unity面试题及答案(十二)

2022-10-31
在线咨询 免费试学 教程领取