底层unity

Unity如何优化Drawcall

降低游戏的Drawcall,是渲染优化很重要的手段,接下来从以下4个方面来分析如何降低DrawCall: (1) 降低Drawcall的意义是什么?如何查看游戏的Drawcall; (2) Drawcall合批的常用的技术手段原理与优缺点; (3) 组织项目让Drawcall最小需要注意的点; 搞清 ......
Drawcall Unity

Unity性能优化之内存篇

本文和传统的内存优化不一样,不是讲如何降低内存占用,而是讲编程开发中要注意的内存问题以及一些内存技术的演变与原理。 本文很长,目录如下: (1)Application进程的内存分段; (2)OS动态内存分配与手动内存管理; (3)什么是内存碎片,避免内存碎片常用手段; (4)什么是内存泄漏,预防与追 ......
内存 性能 Unity

如何做好Unity项目性能优化

在面试中,我们经常会被问各种”莫名奇妙”的问题, 比如这道:”你是如何做好Unity项目性能优化的?”。“这个问题也太泛了吧,没有具体的优化点,这怎么回答?” 瞬间跃入脑海。做面试复盘的时候,你可能会想这个面试官是不是什么都不懂,是个”青铜”啊。没错,能问这道问题的面试官要么是个”青铜”, 要么就是 ......
性能 项目 Unity

深入Go底层原理剖析和源码解读,重写Redis中间件实战积累大型项目经验

Go 中的runtime 类似 Java的虚拟机,它负责管理包括内存分配、垃圾回收、栈处理、goroutine、channel、切片(slice)、map 和反射(reflection)等。Go 的可执行文件都比相对应的源代码文件要大很多,这是因为 Go 的 runtime 嵌入到了每一个可执行文件 ......
中间件 底层 实战 源码 原理

通关Go语言,从基本原理到项目实战,由浅入深Go的底层原理与核心特性

通关Go语言,从基本原理到项目实战,由浅入深Go的底层原理与核心特性 go核心原理 本人在一家go技术栈工作2年有余,因此梳理一下我认为比较重要的go语言技术知识,一些基础的概念,比如function, interface这些就忽略了。 https://draveness.me/golang/ ht ......
原理 底层 实战 特性 核心

Unity的粒子总是丢材质

1)Unity的粒子总是丢材质2)C#传给C++的Byte数组如何释放3)CommandBuffer.DrawProcedural在手机上为什么不生效4)游戏加载场景碰撞,会弹出显卡报错,驱动程序超时 这是第359篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技 ......
粒子 材质 Unity

面对小白的Unity学习笔记(一)—— 前言

说我是初学者,自从上大学开始,我已经在游戏制作领域混了6年有余。但若说我是一个经验丰富的制作人,我可能连短期培训班里出来的还不如。 不知道该怪谁,但善于推卸责任的我总喜欢把原因归咎于学校的教育,我认为教科书太过于教条,总喜欢拽一堆堆的名词,什么面对对象,什么接口,什么对修改封闭,对拓展开放,根本听不 ......
前言 笔记 Unity

Unity ET服务器框架小记

前言 之前用过一段时间Mirror,它是一个服务器客户端一体的框架,通过给方法打上特定注解,来控制该方法运行在客户端还是服务器上(Unity官方已弃用的UNet设计思路一致)。这是它的优点,也是它的缺点,见仁见智吧。抛开这一点不谈,如果是客户端做主机那还好,但如果要打包为Deplicate Serv ......
小记 框架 服务器 Unity

Unity DOTS中ECS核心架构详解

最近DOTS终于发布了正式的版本, 我们来分享一下DOTS中ECS的几个关键概念与结构,方便大家上手学习掌握Unity DOTS开发。 ECS中的World Unity DOTS ECS架构中所有的Entity都是被放到了World对象里面,每个Entity在World里面都有唯一的Id号。Unit ......
架构 核心 Unity DOTS ECS

Unity 如何使用”左右互博”强化训练游戏角色的AI

现在ChatGPT非常的火,大家都使用大数据模型来生成内容,后续机器人,仿真机器人的行为控制,也将会是AI领域很火的一个方向之一,这个方向就可以和游戏高度契合,游戏通过3D角色来仿真,通过训练AI行为来控制机器人的一些动作与决策,今天我们以”足球游戏”为背景,来详细的讲解,如何基于 “左右互博”强化 ......
游戏角色 角色 Unity

Unity ECS最新DOTS环境搭建教程

最近DOTS终于发布了正式的版本, 今天我们来基于Unity 2023.1.6来搭建DOTS 1.0.16的开发环境与注意事项。 1 获取DOTS的在线文档 Unity DOTS的权威资料比较少,我们主要的都是基于DOTS的官方文档来进行学习和使用。Unity DOTS的官方文档的下载地址: htt ......
环境 教程 Unity DOTS ECS

unity游戏发布调试

详见unity手册-平台开发-独立平台 1.unity内运行正常,平台运行失败-build-DevelopmentBuild勾选 根据平台上的DevelopmentBuild信息,有以下原因 1)第三方库与.net的依赖-playerSetting-Other-Configuration&API C ......
unity

记一次Unity性能优化

Before you make any changes, you must profile your application to identify the cause of the problem. If you attempt to solve a performance problem bef ......
性能 Unity

unity 点击,长按和双击

转自:Unity 单击、双击、长按事件处理_unity button长按事件_司军礼的博客-CSDN博客 原理: 1.将操作抽象成三个类:ClickButton,DoubleClickButton,PressButton并实现各自的生命周期函数: ClickButton:OnPointerDown启 ......
unity

从FrameDebugger看Unity渲染

Unity如何渲染一个3D+2D的游戏画面,今天通过FrameDebugger来看下Unity内置渲染管线的渲染策略, 后续再出一些URP渲染管线相关的文章。 Unity 渲染场景的几个主要部分 Unity内置渲染管线是基于摄像机来进行渲染的,每个摄像机按照摄像机的渲染顺序来依次渲染,渲染完一个摄像 ......
FrameDebugger Unity

Unity基于状态机的流程控制

我们做游戏的时候经常会有流程控制,流程控制的方法有很多,行为决策树,状态机等。本质差别都不大,就是把每一段执行逻辑做成一个一个的节点,根据条件执行某个节点,切换到某个节点。今天给大家分享一下基于状态机来做游戏流程的控制。 1 一个简单的状态机案例 我们先来拆解一个使用案例,通过这个案例让大家对状态机 ......
流程 状态 Unity

go 里面数组切片[:] 底层是复制一个新的

package ethereum import ( "testing" "unsafe" ) func Test1(t *testing.T) { a := "dafasdf" b := a[:] println(unsafe.Pointer(&a)) //0xc000063e78 println( ......
数组 底层 go

Java 基础 - 多态(动态绑定)的底层原理:虚函数表

为了实现Java方法调用的动态绑定,HotSpot使用了与C++虚函数类似的机制,同时为了避免每个对象都维护一个虚函数表,就是设计了Oop-Klass模型,用Klass类保存类的元数据和虚函数表。 多态的理解 从java语言层面看,多态是指在编译期间不确定实际类型,在运行期间才根据实际类型调用具体的 ......
底层 函数 原理 基础 动态

Unity DOTS系列之Struct Change核心机制分析

最近DOTS发布了正式的版本, 我们来分享一下DOTS里面Struct Change机制,方便大家上手学习掌握Unity DOTS开发。 基于ArchType与Chunk的Entity管理机制 我们回顾以下ECS的内存管理核心机制,基于ArchType+Chunk的Entity管理模式。每个Enti ......
机制 核心 Change Struct Unity

Unity-Android 权限相关问题

生成AndroidManifest File -> buildSetting->playerSetting->Android->publishing Settings 权限添加位置: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:and ......
Unity-Android 权限 Android 问题 Unity

Unity DOTS系列之托管/非托管Component的区别与性能分析

最近DOTS发布了正式的版本, 我们来分享一下DOTS里面托管与非托管Component的区别与性能分析,方便大家上手学习掌握Unity DOTS开发。 托管与非托管的区别在于是不是基于自动垃圾回收的。托管是由垃圾回收器来负责自动回收,非托管需要我们手动来做相关内存管理,不被垃圾回收系统来处理。 U ......
性能分析 Component 性能 Unity DOTS

Unity从入门到主程学习路线(内含学习资料)干货超全

写在最前 很多小伙伴想进阶Unity主程,进阶Unity架构师,不知道要学哪些知识,今天给大家分享一下比较完整的知识体系,Unity学习路线,介绍一些有干货的博主与教程,给大家做参考。 不管你是已经工作了,还是正在学习中的Unity初学者,如果你想在游戏开发行业中有更高更远的发展,请用五分钟阅读下面 ......
干货 学习资料 路线 资料 Unity

Unity学习笔记--基础

Unity3D引擎学习的一些基础知识。包括3D数学知识,MonoBehavior中的延迟函数、协程,以及协程的底层实现。Resources资源的动态加载、异步加载,最后学习范围检测和射线检测两大常用功能要点。 ......
基础 笔记 Unity

基于Unity整合BEPUphysicsint物理引擎实战

上一节我们详细的讲解BEPUphysicsint 的物理事件。此物理引擎会产生了碰撞事件与非碰撞事件,碰撞事件大家好理解,非碰撞事件例如: 物理Entity的update事件,Entity的activation/deactivation事件等。本节课来实战如何编译BEPUphysicsint源码到自 ......
BEPUphysicsint 实战 物理 引擎 Unity

为什么这么NB?huatuo革命Unity热更新

最近huatuo(华佗)热更新解决方案火爆了unity开发圈,起初我觉得热更新嘛,不就是内置一个脚本解释器+脚本语言开发,如xLua, ILRuntime, puerts。Huatuo又能玩出什么花样,凭什么会这么NB,引起了那么多程序员的关注与称赞呢?带着这些问题我详细的看了huatuo的资料,阅 ......
huatuo Unity

Unity动态获取项目信息

string PackageName = Application.identifier; //包名 string APPversion = Application.version; //APK版本号 string ProductName = Application.productName; //产品 ......
项目 动态 Unity 信息

Unity显示 物体的最小uv

开发过程中遇到同一个mesh,同一个shader,但是出现渲染结果不一致的情况。 初步猜测是光栅化后,像素中心对应物体的位置不同,uv通过插值生成,从而导致渲染结果不一致。 下文验证了uv会随着物体的位置不同,而发生改变。 验证 使用了 https://github.com/cinight/Mini ......
物体 Unity

Unity 创建自定义渲染管线

可以看官方的 https://docs.unity3d.com/Manual/srp-custom-getting-started.html 或者 这位大佬的 https://zhuanlan.zhihu.com/p/378828898 ......
管线 Unity

Unity 实现对摄像机位置移动(前后左右平移,左转右转,俯仰)的两种方案

在实现这个功能的过程中走了很多歪路,特别是借鉴的一个博主的代码会出现平移之后立即复位的问题。 最后也没确定问题出在哪,解决问题的方法是将本来用于旋转的欧拉角的乘算改成建立一个新向量进行加算并最后使用transform.Rotate指令进行旋转。 并不排除是其他地方导致的这个bug。 最后得到的两个方 ......
摄像机 位置 方案 Unity

Unity DOTS系列之Struct Change核心机制分析

最近DOTS发布了正式的版本, 我们来分享一下DOTS里面Struct Change机制,方便大家上手学习掌握Unity DOTS开发。 基于ArchType与Chunk的Entity管理机制 我们回顾以下ECS的内存管理核心机制,基于ArchType+Chunk的Entity管理模式。每个Enti ......
机制 核心 Change Struct Unity