主页

【译】Unity博客《Accessing texture data efficiently》

原文链接:Accessing texture data efficiently 本篇文章介绍了Unity中一些访问纹理数据的方法和API,以及他们之间在不同情况下的优劣和区别。 在Unity中使用纹理数据 像素数据描述了纹理中单个像素的颜色。Unity 提供了一些方法,使您能够使用 C# 脚本从像素数据中读取或写入。 您可以使用这些方法来复制或更新纹理(例如,向玩家的个人资料图片添加细节),或以特定方式使用纹理的数据,例如读取表示世界地图的纹理以确定在哪里放置对象。 有几种编写从像素数据中读取或写入代码的方法。您选择的方法取决于您计划对数据进行什么操作以及项目的性能需求。 本博客和附带的示例项目旨在帮助您浏览可用的 API 和常见性能陷阱。对两者的理解将帮助您编写高效的解决...

阅读更多

译:Unity博客《custom == operator,should we keep it》

偶然看到一篇回答unity的垃圾回收和c#的垃圾回收是同一个吗? - 问渠的回答 - 知乎 觉得很有意思,简译顺便学习。 这是一篇解释了“Unity为什么要使用自定义的==运算符,以及这样做导致的结果”的博客。 原文地址:Custom == operator, should we keep it? When you do this in Unity: if (myGameObject == null) {} >Unity does something special with the == operator. Instead of what most people would expect, we have a special implementation ...

阅读更多

C#和Unity中的异步探究

C#自早期版本引入Async/Await语法糖,其背后实现其实是Task。对于Unity也引入了这样的语法糖来大大方便了异步实现,但对比传统的C#工程,和使用C#作为脚本语言的Unity,他们之间的异步仍然是有区别的。 Unity的Task被封装到了NetStandard.dll,而C#则属于mscorelib.dll或.NetCoreApp/System.Runtime.dll,这取决于你使用.NetCore还是.NetFramework。 Async/Await 对于所有的await部分,其返回的结果都需要实现GetAwaiter方法,这是一个TaskAwaiter类型,实现了ICriticalNotifyCompletion和INotifyCompletion接口。包...

阅读更多

《Unity主程手记》摘要记录(5)

作者:陆泽西-《Unity3D高级编程:主程手记》 第九章-渲染管线与图形 9.1数学 向量的意义 点乘 a·b=‖a‖×‖b‖×cosβ,结果为正数,两者方向一致;0:垂直;负数方向不一致。当负数最小,两者方向完全相反。 β=arcos((a·b)/( a × b ))角度计算 //点乘 public static float Dot(Vector3 lhs,Vector3 rhs) { return lhs.x*rhs.x+lhs.y*rhs.y+lhs.z*rhs.z; } //用Mafhf.Acos(float)取反三角函数,就有了:β = Mathf.Acos...

阅读更多

《Unity主程手记》摘要记录(4)

作者:陆泽西-《Unity3D高级编程:主程手记》 第七章-AI 7.1状态机 State基类-管理类->子类实现_>current指向当前状态。 基本的周期函数:Enter,Update,Leave。 但是不好处理复杂AI、无法处理突发状态。 7.2行为树 树状节点,自由灵活。 几种典型的Node类型: 复合节点Composite Node,条件检查 修饰节点Decorator Node,可以额外处理子节点的条件结果 条件节点Condition Node,大于小于、距离、与或非、True/Flase 行为节点Action Node,执行具体的行为,一般都是最后一层的子节点。 为了提供随机性,还有非线性迭代的加权随机变种、以及调试用的...

阅读更多

《Unity主程手记》摘要记录(3)

作者:陆泽西-《Unity3D高级编程:主程手记》 第五章-3D模型与动画 5.1美术资源规范 模型面数并非越多越好,应该在一定数量下尽最大努力做大最好的美化。贴图同理。在性能和效果间取得平衡,规范可以防止制作美术资源时过度扩张。 5.1.1确定大小 影响因素:Mesh数量、贴图大小、骨骼和粒子数量、材质数量等。 根据场景确定。 强调单一主角的场景,要求可以放宽,这类游戏的全部或者大量资源全部都要服务于主角,比如汤姆猫。 卡牌策略类,场景固定,视角不移动。主要资源集中在场景和人物,特效上。因为同屏模型数量不会很多,因此标准也可以宽松一些。 第三人称视角RPG,视角更广,看到的模型更多。对于开放世界的建筑模型,可以按大中小分...

阅读更多

《Unity主程手记》摘要记录(2)

作者:陆泽西-《Unity3D高级编程:主程手记》 第三章-数据表与程序 3.1数据表的种类 代码:直接写死,通常只存在于Demo阶段或mini game。制作快,改动麻烦,有迭代问题。 文本数据:json,xml,csv等格式。直观,易修改。导表工具。 比特流:.bytes,空间小,解析快,通用性差,不直观。适合release或正式版本。 3.2制作方式 自动化工具,Jekins,导表工具比如LuBan 3.3多语言 常量表,Key / Value,或者多语言对应多个语言表 Key CN EN JP KR Win 胜利 ...

阅读更多

《Unity主程手记》摘要记录(1)

作者:陆泽西-《Unity3D高级编程:主程手记》 第一章 1.1架构的意义 1、承载力;2、可扩展性;3、易用性;4、可伸缩性;5、容错 1.2设计 分层(spring web应用、Linux系统架构、TCP/IP分层架构) 分治(分治抽象) 1.3构建 网络->数据->资源管理->核心逻辑框架->框架。GF、ET。 第二章 2.1底层原理和机制 c#源码地址 c#的运行机制:C#代码->编译器->IL(DLL文件)->CLR(加载DLL然后翻译)->10000101(机器语言) IL2CPP:将IL翻译成C++代码,发布到不同平台时,调用对应平台的C++编译器,AOT,无法热更。 Mono:.Net的跨...

阅读更多