C# Unity 唐老狮 No.3 模拟面试题

devtools/2025/3/5 2:13:04/

        本文章不作任何商业用途 仅作学习与交流 安利唐老狮与其他老师合作的网站,内有大量免费资源和优质付费资源,我入门就是看唐老师的课程 打好坚实的基础非常非常重要:

Unity课程 - 游习堂 - 唐老狮创立的游戏开发在线学习平台 - Powered By EduSoho

        如果你发现了文章内特殊的字体格式,那是AI补充的知识

目录

        C#

1. 泛型的约束有哪几种?

2. 什么是闭包?可以举例说明

3. 内存泄漏指什么?常见的内存泄漏有哪些?

4. 序列化是什么?常见的序列化方式有哪些?什么时候我们会用到序列化?

5. 请问A、B、C 三处打印结果分别为多少?为什么?

​编辑

Unity

1. transform.forward和Vector3.forword的区别

2. Unity中如何解决过多创建和删除对象带来的卡顿问题?

3.游戏中的成就系统,我们一般会使用设计模式中的哪种模式来制作?为什么?

4. 请简述热更新的流程

5. 我们应该如何优化UI(基于UGUI)


C#

1. 泛型的约束有哪几种?

比较常见的有:

引用约束class  值类型约束struct 无参构造约束 new()

继承约束 不定名(比如需要T继承接口,继承抽象类等)

 知识加油站:C# & Unity 面向对象补全计划 泛型的入门与进阶使用实例_unity ic2cpp泛型怎么修改-CSDN博客

2. 什么是闭包?可以举例说明

        闭包在唐老师的课程之中出现在匿名函数(Lambda表达式)一节,可以望文生义,就是(外部)变量在内部函数之中被闭合包裹 导致其脱离了原本的生命周期,即使外部函数已经执行完毕,该变量的生命周期依然能被内部函数延续

        代码举例:

using UnityEngine;public class Score : MonoBehaviour 
{void Start(){// 外部作用域的局部变量int externalVar = 10;// 创建闭包 (Lambda捕获externalVar)System.Func<int> closure = () =>{externalVar += 5; return externalVar;};Debug.Log(closure()); // 输出 15Debug.Log(closure()); // 输出 20(证明变量状态被保留)}
}

3. 内存泄漏指什么?常见的内存泄漏有哪些?

        是指动态内存没有被正确释放,造成没法用也没法gc的现象

        常见:空指针,未及时关闭多线程,错误的循环代码

4. 序列化是什么?常见的序列化方式有哪些?什么时候我们会用到序列化?

        将数据结构或对象转为可存储/传输 格式的文件的过程叫做序列化

        转json,转二进制,转xml,unity提供的 PlayerPrefs

        存储/传输 长期可读写信息的时候用到

5. 请问A、B、C 三处打印结果分别为多少?为什么?

         10 ,  100, 100

        二是c++的指针 &为取地址符 因此传入形参也会被指向地址

        三是c#的安全指针 作用和指针类似 唐老师c# 基础 ?介绍过ref和out

Unity

1. transform.forward和Vector3.forword的区别

        unity世界空间是左手坐标系为准

        前者是指当前物体的前方 默认指向z(0,0,1) 但是发生旋转改变局部坐标系以后会改变该向量的朝向,但是可以用父子关系的方式通过

        transform.Translate(transform.forward, Space.World) 改变第二个参数来控制

        后者是一个向量(0,0,1) 是常量,始终向z

2. Unity中如何解决过多创建和删除对象带来的卡顿问题?

        对象池 知识加油站:

你都学会栈和队列了赶紧手搓一个对象池吧!!!(超详细,超简单适合新手宝宝学习)-CSDN博客

3.游戏中的成就系统,我们一般会使用设计模式中的哪种模式来制作?为什么?

         观察者模式 或者 事件中心 

        因为订阅者无需知道发布者的详细逻辑,只需要在该触发的地方进行订阅即可

        还能解耦,还方便拓展(无非是加几个委托)

知识加油站:Unity 从零开始的框架搭建1-1 unity中对象调用的三种方式的优缺点分析【干货】_unity实例化-CSDN博客

4. 请简述热更新的流程

        资源热更:

 处理资源 ---> 打成ab包---->上传服务器 -----> 玩家使用---->异步下载---->完事

        ai补充 代码热更:

代码修改与编译---->上传服务器----->客户端检测与下载---->代码加载与应用

5. 我们应该如何优化UI(基于UGUI)

         1.剔除看不见的UI,同时尽量减少重叠

        2.打图集,压缩纹理,简化材质

        3.通过显示和隐藏面板, 而不是创建和销毁,或者通过canvasGroup 控制alpha,interactable blocksRaycasts等+禁用组件去控制面板,可适当提升性能

        4.网格合批,因为UGUI的网格也是一个个三角面片,因此可以使用合批的方式进行优化

优化手段Draw Calls 减少帧率提升
合理使用图集30% ~ 60%+15fps
分离动态/静态 Canvas40%+20fps
替换 TextMeshPro25%+10fps
禁用 Mask 改用 RectMask2D20%+8fps

 


http://www.ppmy.cn/devtools/164625.html

相关文章

【PHP】fastadmin中对addons进行路由重写

文章目录 概要技术细节 概要 公司的项目中使用了一个addons的cms插件&#xff0c;要求在这个插件的基础上做二次开发&#xff0c;新加了页面&#xff0c;发现url路径太难看了&#xff0c;默认是 addons/cms/index/calendar&#xff0c;想优化一下&#xff0c;但通过deepseek的…

【go语言】——方法集

在 Go 语言中&#xff0c;方法集&#xff08;method set&#xff09;是指与某个类型&#xff08;无论是值类型还是指针类型&#xff09;相关联的方法的集合。 1.值类型的实例与方法集 值类型的实例具有方法集&#xff0c;这些方法集只包含 值接收者 方法。你可以对值类型实例…

计算机毕业设计SpringBoot+Vue.js相亲网站(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

关于常规模式下运行VScode无法正确执行“pwsh”问题

前言&#xff1a; pwsh在系统环境中正确配置&#xff0c;且可以运行在cmd&#xff0c; powshell&#xff08;5.1&#xff09;--- 都需要在管理员权限下运行 &#xff08;打开setting&#xff09; 打开setting.json &#xff08;在vscode中添加 powershell 7 路径&…

加油站小程序实战05地图加载

目录 1 注册地图应用2 创建小程序3 开发地图组件3.1 组件语法3.2 地图组件 4 最终效果总结 站点信息搭建完毕后&#xff0c;我们就可以进入到小程序部分开发了。因为是多站点管理&#xff0c;我们在进入小程序主页的时候需要加载地图显示所有站点信息。地图选择有多种方案&…

MySQL -操作

博客主页&#xff1a;【夜泉_ly】 本文专栏&#xff1a;【暂无】 欢迎点赞&#x1f44d;收藏⭐关注❤️ 文章目录 创建数据库格式编码集 操控数据库查看数据库修改数据库删除数据库备份与还原 部分表操作创建表查看表修改表 我的版本号&#xff1a;8.0.41-0ubuntu0.22.04.1 创…

搭建iOS逆向开发环境 (下) - 越狱设备与高级工具配置

搭建iOS逆向开发环境 (下) - 越狱设备与高级工具配置 在上一篇文章中&#xff0c;我们介绍了iOS逆向工程的基础环境搭建和核心工具链的安装。正如预告的那样&#xff0c;本篇将继续深入探讨环境搭建的更高级部分&#xff0c;包括越狱设备的配置、远程连接工具、网络分析环境以…

MacBook Pro使用FFmpeg捕获摄像头与麦克风推流音视频

FFmpeg查看macos系统音视频设备列表 ffmpeg -f avfoundation -list_devices true -i "" 使用摄像头及麦克风同时推送音频及视频流: ffmpeg -f avfoundation -pixel_format yuyv422 -framerate 30 -i "0:1" -c:v libx264 -preset ultrafast -b:v 1000k -…