![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Unity游戏开发
文章平均质量分 88
Terie
目前从事 Unreal5 客户端开发ing...
展开
-
【Unity】四元数原理学习笔记(二)
文章目录四元数的旋转Unity中的四元数和旋转欧拉角和四元数关于四元数的数学概念:四元数原理学习笔记四元数的旋转四元数并不只能用来表示旋转,任何旋转量都是为了计算空间坐标服务的,无论是四元数,还是矩阵,欧拉角,你都可以找用他们来表示坐标的形式。四元数表示坐标的形式很自然,就是虚数部分对应三维坐标的三个维度,实部为零。即,表示坐标的四元数必须是一个纯四元数。p=xi+yj+zk\textbf{p} = x\textbf{i} + y\textbf{j} +z\textbf{k}p=xi+yj+z原创 2021-01-12 16:11:11 · 524 阅读 · 1 评论 -
【Unity】浅谈UGUI的锚点和自适应
文章目录UGUI 锚点的使用Pivot点锚点的初级使用锚点的理解anchorMin,anchorMaxsizeDeltaanchoredPosition推导与证明总结讨论最近在做一个UGUI的Demo,我们知道要做自适应,绕不开RectTransform组件中锚点的设置。我先总结一下我的UGUI锚点的使用,最后重点说明一下自己对于锚点的理解。UGUI 锚点的使用我们要先清楚Pivot的概念。Pivot点它用来表示一个RectTransform的中心点。当你试图改变一个物体的宽高的时候,比如直接代码原创 2020-12-20 15:42:05 · 3019 阅读 · 2 评论 -
Unity热更新技术学习——编译lua源码并为lua编写C模块
文章目录构建lua源码C编写lua模块的两种形式官方lua是一门纯C实现的嵌入式语言。说是嵌入式语言,是指它可以作为辅助语言被主语言使用,比如Unity游戏中,lua就是作为一门嵌入C#的辅助语言为Unity游戏提供热更新,而帮助lua嵌入C#的框架可以是tolua,xlua或者ulua等。然而“嵌入式”只是因为它可以上述这么用,lua也可以作为主体语言使用,与python类似但轻量级的解释性语言。例如:有时候出于很多种原因,需要使用C语言去编写一个lua可以用的模块。在此之前,需要知道如何构建lua原创 2020-10-07 16:20:24 · 952 阅读 · 0 评论 -
Unity 改变CPU亲和度(Android)
文章目录定义读写CPU亲和度定义CPU亲和度(CPU Affinity)一种表征软件在特定处理器运作倾向的方法。比如目前的骁龙处理器一般是八个核心,由四个大核和四个小核,或者2个大核六个小核组成。在Android平台上,通过以下命令查看对应的CPU最大频率。频率高的就是大核,反之就是小核。adb shell cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq通常,一个应用程序默认设置为软CPU亲和度,这表示没有限制必须在哪个核心上跑这原创 2020-07-12 11:58:41 · 1498 阅读 · 4 评论 -
Unity 与 NDK开发
文章目录Unity 与 C++NDK开发动态链接库NDKUnity 与 C++C#是Unity的官方推荐的开发语言。如果某些逻辑需要C++支持以提供高性能特性,或者需要C++去跟底层硬件或者操作系统级别的接口交互,那么就需要用C#去调用C++的接口。这往往依赖动态链接。即用C++开发动态链接库,然后C#调用动态链接库里暴露的接口。而在Android上开发动态链接库(.so文件)的方法,就是NDK开发。NDK开发动态链接库NDKNDK 全称原生开发工具包(Native Development K原创 2020-06-15 23:59:39 · 2160 阅读 · 0 评论 -
Unity热更新技术学习——AssetsBundle详解
文章目录热更新AssetsBundleResourcesAssetsBundle存储目录目录实例热更新热更新是指,你需要为应用程序修改某种资源,或者增加某种资源的时候,不需要新发布一个新的应用程序到应用商店让用户下载并重新安装,只需要联网,然后下载更新的内容即可。比如游戏出了一款新皮肤,推出一个新活动,或者修复某个紧急的小bug,如果这些小事情每次都要用户重新下载应用程序,就特别烦,尤其是如今中国国民级的手游动辄3到5个G。为此,考虑需要频繁更新的内容就可以分成两个部分:普通的资源文件,如材质,模原创 2020-06-06 19:59:13 · 4165 阅读 · 3 评论 -
Unity热更新技术学习——LuaInterface
文章目录概述使用LuaInterfaceLuaInterface教程类型转化从CLR访问Lua从Lua访问CLR概述LuaInterface是一个CLR库,以 .dll 的形式呈现。要想在Unity中使用Lua,必须解决C#和Lua的交互问题,或者说CLR(即windows平台为人熟知的.Net或者linux上的Mono)和Lua的交互。LuaInterface为了解决这个问题,最重要的就是做了两件事情:LuaInterface 允许Lua脚本实例化CLR对象并使用它,甚至创建新的CLR对象允许原创 2020-06-06 01:07:51 · 1065 阅读 · 0 评论 -
Unity热更新技术学习——Lua,Luajit
文章目录Lua预编译资源使用 Lualuajit其他语言LuaLua是一门轻量级的脚本语言,使用C语言编写,编译器和解释器也是C语言编写。下载资源:源码 http://www.lua.org/ftp/预编译好的Lua库和编译器 http://luabinaries.sourceforge.net/预编译资源下载第二个预编译好的lua资源(windows平台),包含如下文件:文件描述lua.exelua脚本的编译器lua53.dlllua5.3的库lu原创 2020-06-05 12:06:38 · 1412 阅读 · 0 评论 -
Unity 将来时:IL2CPP是什么?
Unity 将来时:IL2CPP是什么?转载 2020-01-24 15:10:59 · 617 阅读 · 0 评论 -
Unity 性能问题的优化
文章目录1. 优化Unity中的脚本简介用我们的代码诊断问题关于Unity如何构建和运行游戏的简要介绍建立过程我们编写的代码和已编译的代码之间的关系Unity Engine代码与脚本代码之间的运行时通信代码性能不佳的原因改善代码的性能编写高效的代码尽可能将代码移出循环考虑代码是否必须每帧运行仅在情况发生变化时运行代码每[x]帧运行一次代码使用缓存使用正确的数据结构尽量减少垃圾收集的影响使用对象池避...翻译 2020-01-13 22:00:12 · 2107 阅读 · 0 评论 -
Android 获取进程CPU和内存数据
文章目录CPU数据内存数据方法一方法二CPU数据读取/proc/[pid]/stat里的特定数值,然后进行计算就好了。关于/proc/[pid]/stat中具体每个数据的含义,请参考linux-man7 private double getCPUInfo() { double ret = 0.0; try { if (appStatFi...原创 2019-12-18 13:40:49 · 681 阅读 · 0 评论 -
Unity Android中开发Jar sdk并调用java代码
文章目录工作原理环境依赖最简单的Java调用书写java代码jar文件注入Unity工程使用apk工作原理Unity提供了C#代码调用Java的代码,原理其实就是JNI。开发的jar sdk需要放置在一个特殊的目录中,Unity会识别里面有关java或者android的东西,一并打包进apk里。环境依赖Unity:截止这篇文章写完,用的是Unity2017java:java 1.8,原...原创 2019-12-17 11:41:41 · 582 阅读 · 0 评论 -
测试工具GAutomator的研究(三)——GAutomator原理
文章目录GAutomator源码结构GAutomator测试脚本命令的发送方式简单的测试用例安卓端的SDKGAutomator源码结构这里只讨论 Unity + UGUI + Android 的情况。实际上,测试脚本只区分是Android还是IOS平台。至于游戏开发平台和UI种类,一开始嵌入游戏的sdk会告诉我们。那么我们讨论的源码根目录就是GAutomator/GAutomatorAndr...原创 2019-10-12 11:34:32 · 2800 阅读 · 1 评论 -
测试工具GAutomator的研究(二)——GAutomator大致原理
文章目录GAutomator大致原理GAutomator大致原理GAutomator(以下简称GA)首先在PC上用adb connect命令和安卓端建立链接。这个链接是基于TCP的。通过在python测试脚本中可以控制在cmd终端发送adb的其他命令,比如tab点击命令,模拟屏幕点击,等等。为了能够发送自己定义的命令,比如获取游戏组件树结构,获取某个按钮,需要将这些数据通过adb forwar...原创 2019-10-11 15:23:48 · 27786 阅读 · 0 评论 -
NGUI之UIScrollView
NGUI之UIScrollViewUIScrollView 一般用于创建滚动页签,ScrollView要和UIPanel和UIDragScrollView组件配合。其中需要用到UIPanel的裁切功能的配合,而UIDragScrollView负责监听点击(Press)和拖曳事件,然后交由UIScrollView处理。在源代码中,UIScrollView会向上寻找第一个承载UIScrollView...原创 2019-09-03 16:04:01 · 561 阅读 · 0 评论 -
Unity 的资源管理
文章目录概述Unity的资源管理Resources目录AssetBundles资源管理的几个重要路径dataPath概述最近遇到的一系列问题跟AssetsBundle有很大关系,然后刨根问底,揪出了许多跟Unity资源管理有关的问题。本片技术日志将讲解我于今天关于以下几点内容的思考:Resources 目录什么是AssetBundlesUnity 资源管理的几个重要路径如何使用Ass...原创 2019-09-09 21:37:05 · 877 阅读 · 0 评论 -
Unity中的四元数和旋转
文章目录四元数四元数四元数用来表示一个物体的位置,或者旋转。这两种其实是等价的。我们可以说一个三维向量(x,y,z)(x,y,z)(x,y,z)可以表示一个物体的空间位置,也可以表示位移。因为任何一个三维向量可以表示原物体相对于位置(0,0,0)(0,0,0)(0,0,0)的位移。同样,一个四元数表示的物体位置也可以看作是一个物体相对于初始四元数(0,0,0,0)(0,0,0,0)(0,0,0...原创 2019-09-11 21:32:30 · 1435 阅读 · 0 评论 -
四元数原理学习笔记
文章目录四元数的数学性质四元数的数学性质定义Gamma公式展示 Γ(n)=(n−1)!∀n∈N\Gamma(n) = (n-1)!\quad\foralln\in\mathbb NΓ(n)=(n−1)!∀n∈N 是通过 Euler integralΓ(z)=∫0∞tz−1e−tdt .\Gamma(z) = \int_0^\infty t^{z-1}e^...原创 2019-09-15 14:16:22 · 1575 阅读 · 0 评论 -
Unity shader学习笔记(一)—— 渲染流程
文章目录渲染流水线OpenGL 和 DirectX渲染流水线为了渲染一个模型,我们需要知道这个模型的每个顶点信息,有可能还需要知道由几个顶点构成的每个片元的颜色,这个颜色可能是直接指定的顶点颜色然后做的插值,也可能是用一张纹理“贴”上去,然后还要经过顶点变换,裁剪,等等操作,最后才渲染到屏幕上。为了加快这些步骤的执行,我们希望能够将这些步骤拆分成具体的几步,参考CPU指令流水线的思想,用流水线...原创 2019-09-12 21:28:10 · 1732 阅读 · 0 评论 -
Unity shader学习笔记(二)—— 着色器
文章目录概述Unity的着色器类型顶点着色器片元着色器总结概述在学习笔记(一)中,说明了GPU渲染流水线中有三个可编程的部分,亦即四个着色器。分别是顶点着色器,曲面细分着色器,几何着色器,片元着色器。但是在Unity shader的教程中,我只看到了关于顶点着色器和片元着色器的编程,所以本文只记录关于顶点着色器和片元着色器的学习笔记。另外还有一个着色器需要提及,就是表面着色器(Surface ...原创 2019-09-13 13:53:55 · 450 阅读 · 0 评论 -
Unity Shader学习笔记 (三)—— C for graphics 专题(一)
文章目录概述语言特性数据类型pragma关键字语义语义总结概述前面的一些博客里展示的一些Untiy Shader中,实际的顶点着色器和片元着色器代码被编写到了一个语法块CGPROGRAM和ENDCG中(例如这篇博客)。这个语法块告诉我们,在这里面编写的代码遵从CG的语法。CG = C for graphics。顾名思义,可以理解为针对图形编程的C语言。实际上,Cg是NVIDIA为GPU编程设...原创 2019-09-18 15:29:37 · 591 阅读 · 0 评论 -
寻路网格Nav Mesh的生成原理
文章目录1 简介这篇文章将会翻译一篇来自布莱金理工学院的论文Towards Real-Time NavMesh Generation Using GPU Accelerated Scene Voxelization的前一小部分。传统的NavMesh生成是在CPU上做的体素化,这篇文章主要讨论的是如何将这部分搬到GPU上做,从而起到加速计算的效果。不过本文只翻译前半部分,前一小部分概述了整个Nav...翻译 2019-09-19 18:07:11 · 3873 阅读 · 1 评论 -
测试工具GAutomator的研究(一)——如何使用GAutomator
文章目录GAutomator简介使用1.下载源码2.将sdk嵌入到Unity工程3.使用adb连接安装了游戏的安卓设备4.运行游戏5.打开测试脚本工程开始测试GAutomator简介GAutomator是腾讯wetest测试平台下的一个针对手游的开源的自动化测试框架。源码在GitHub上有:GAutomator。GAutomator将sdk嵌入到游戏中,然后通过adb连接客户端和服务器端(手游...原创 2019-10-11 11:30:15 · 8314 阅读 · 3 评论 -
NGUI之UITable
NGUI UITable使用方法使用方法你可以简单地在一个空物体上添加 UITable 脚本来实现这个功能。然后它会对该物体下的所有子物体进行排序,在代码里面实际维护了一个孩子Transform的列表:List<Tranform> children。UITable的部分重要参数如下:columns:定义每一行有多少列。当 columns <= 0时,所有的子物体都在一行上...原创 2019-09-03 12:07:11 · 1793 阅读 · 0 评论