游开知识点汇总

C# & 面向对象 #

  • 重载和重写的区别

  • 只读集合类型的写法 (Example : 写geter方法 / 写GetDevice封装 / 写ReadOnlyDictionary只读)

  • 非公开构造函数可以防止外部new出类的实例(常用于单例模式中对类的实例化保护)

  • 接口显式调用可以杜绝接口的随意实现(常用于某些接口中的方法,需要特定逻辑/情况下才能实现)

  • 不要给常见类型写扩展方法(int string double这类,会污染命名空间下的调用),或者将扩展方法放入不常见的命名空间中

  • 属性 vs 索引器

  • 手动属性和自动属性的区别

  • CallBack vs Action vs Func<> vs Delegate vs Event vs UnityEvent vs Predicate(实际上就是delegate的不同表现形式各自有什么不同,应用场景有哪些)

  • 在注册函数方法时, += = -= 的区别

  • 委托的协变和逆变

  • 策略函数

  • 匿名函数

  • 访问修饰符 internal sealed

  • 容器类 List Dictionary Hashset Stack Queue``LinkLIst``ArrayList

  • List vs 数组

  • readonly vs { get; private set; }

  • typeof vs GetType()

  • for vs foeach

  • const vs readonly

  • i++ vs ++i

  • int? vs int

  • Equals vs ==

  • CompareTag vs other.tag

  • ref vs out

  • IList vs List

  • 强类型 vs 弱类型

  • out var

  • ?? 空值合并运算符

  • ?: 三目运算符

  • ?. 非空判断

  • FindObjectOfType<T>() vs FindObjectsOfType<T>()

  • is / as 类型转换

  • nameof 运算符

  • default(T)default 表达式

  • record 类型(不可变数据结构)

  • switch 表达式(C# 8+)

  • Span<T> / ReadOnlySpan<T>(高性能内存访问)

  • 泛型约束(where T : class 等)

  • 异常处理机制(try-catch-finallythrow

  • IDisposableusing 语句块

  • yield return / IEnumerable 迭代器

  • Nullable<T>? 类型声明

  • ref / in / readonly ref 参数传递方式

  • init setter(初始化后只读属性)

  • 特性(Attribute)

  • C# 也有自己的 Union

  • 值元组 (ValueTuple)

  • 枚举类型

  • 事件的监听、注册、注销与触发

  • this

  • 反射

  • 值类型 vs 引用类型

  • 类型安全

  • 装箱拆箱问题

  • 堆 vs 栈

  • 配置表

  • 闭包

  • 深拷贝浅拷贝

  • 链式调用

  • static 类是否算单例

  • 回调

  • Extension Method

  • 依赖关系

  • 控制反转 / 依赖注入

  • 继承

  • 组合优于继承

  • 多态

  • 多态与虚方法(virtual / override / new

  • 封装

  • 开闭原则

  • 单一职责原则

  • 接口 interface

  • 抽象类 abstract

  • 抽象类 vs 接口

  • 部分类 Partial

  • 重载

  • 构造函数 / 析构函数

  • Helper 类

  • Async 异步处理

  • 为什么要写嵌套类

  • 类和结构体有什么区别

  • 静态成员和非静态成员的区别

  • 函数内多次使用 string += 会产生大量内存垃圾,该怎么处理

  • 接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实现类?

  • 结构体是否可以实现接口?

  • Dictionary底层原理

Unity 应用 #

  • Cinemachine

  • Shader

  • AssetBundle (AB包) https://github.com/Unity-Technologies/AssetBundles-Browser

  • AB包的加载流程是什么?

  • CC

  • HybridCLR

  • Animacer

  • Behavior Designer

  • UGUI

  • ScriptableObject(数据驱动架构)

  • Addressables(资源管理)

  • Timeline(可视化动画控制)

  • Input System(新输入系统)

  • DOTS

  • Mirror (网络同步)

  • SubScene (DOTS)

  • FairyGUI

  • Odin

Unity相关 #

  • Unity的生命周期
  • rigidbody中,关于阻尼的变量值可以直接写Infinity来暂停物理运动
  • LocalToWorld ( unity.Transform库中 )
  • Unity协程
  • RectTransform vs Transform
  • 物体发生碰撞的必要条件?
  • 如何安全的在不同工程中迁移 asset
  • MeshRender vs material vs sharematerial
  • Gizmos(调试辅助图形)
  • Physics(碰撞、射线检测等)
  • 图集
  • UI动静分离原理
  • position vs Position
  • Curve曲线做动画处理
  • WorldSpace / ScreenSpace
  • Animation Override
  • GPU的工作原理
  • 什么是渲染管道
  • 如何动态加载资源
  • MipMap
  • .netmono 之间的关系

性能优化 #

架构设计 #

  • 工厂模式
  • 单例模式(懒汉式,饿汉式,如何保证饿汉式的线程安全?)
  • 适配器模式
  • 状态模式
  • 策略模式
  • 观察者模式
  • 装饰器模式
  • 中介者模式(Mediator Pattern)
  • 事件中心(观察者模式Plus)
  • 事件总线(Event Bus)
  • 泛型
  • 泛型对象池
  • 状态机 / 分层状态机 / 状态模式状态机
  • MVC
  • MVVM
  • 单一 GameLoop 统一驱动
  • State Machine + Controller 中枢架构
  • Entity-Component-System(ECS)架构
  • Service Locator + Facade 架构
  • 模块驱动 + 事件总线架构(Event Bus)
  • Actor - Component架构
  • buff 系统怎么设计
  • skill 系统怎么设计
  • 领域驱动设计(DDD)基础
  • 响应式编程(UniRx / Reactive Extensions)

数据处理 #

  • Json(LitJSON、Newtonsoft.Json)
  • 二进制序列化(BinaryFormatter / MessagePack)
  • 数据持久化方案(本地 / 云端)
  • List + MonoBehavior
  • SQLite / MySQL 数据库
  • ScriptableObjects
  • PlayerPrefs
  • xml

小工具类 #

  • Helper类

  • Timer类

  • 逻辑与数据分离(Param类)

数学 #

  • 四元数(Lerp Slerp rotation)
  • 欧拉角
  • 插值
  • Lerp vs SmoothDamp vs MoveTowards vs Easing / 曲线处理
  • 曲线插值 (动画曲线curve)
  • Matrix
  • float vs float2 vs float3 vs float4
  • A*算法,Dijkstra算法

经典问题 #

  • 什么是线程安全?
  • 怎么保证单例模式中饿汉式的线程安全?
  • GC是怎样运作的?(三代处理以及GC算法)
  • 并发(Concurrency)
  • 并行(Parallelism)
  • 线程(Thread)
  • 协程(Coroutine)
  • 进程(Process)
  • 同步 (Synchronous)
  • 异步 (Asynchronous)
  • 多线程
  • 单线程异步
  • 什么是io(I/O密集型任务)?一般用什么模型进行调度?
  • 什么是CPU密集型任务?一般用什么模型进行调度?
  • 帧同步和状态同步
  • 寻路算法的优化 从基础A*到JPS到RVO到KD-tree
  • 其他优化,ui中的一些视野剔除,相机剔除和组件对象池复用
  • AOI视野优化
  • write do undo的实现
  • IOC容器
  • ORCA群体避障

其他 #

  • 图形学
  • OpenGL
  • php
  • 分布式系统的设计
  • 多线程开发
  • cocos2d-x

框架 #

zenject依赖注入框架

assets bundle打包后按需加载

优化draw call

Lua热更新,xLua插件

DoTween动画表现

ATC游戏的招式可以用timeline制作

Ecs架构

Unity DOTS

playfab sdk 后端

ik系统

rewired输入系统

Entity Framework Core