Unity应用
文章平均质量分 87
起个名字真的好难啊
这个作者很懒,什么都没留下…
展开
-
贝塞尔曲线
一:简介1962年,法国工程师贝塞尔发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线是最基本的曲线,一般用在计算机 图形学和 图像处理。贝塞尔曲线可以用来创建平滑的曲线的道路、 弯曲的路径就像 祖玛游戏、 弯曲型的河流等。 一条贝塞尔曲线是由一组定义的控制点 P0到 Pn,在 n 调用它的顺序 (n = 1 为线性,2 为二次,等.)。第一个和最后一个控制点总是具有终结点的曲线;然而,中间两个控制点 (如果有的话) 一般不会位于曲线上 。 (1)贝塞尔曲线包含两个控制...原创 2021-09-18 12:04:01 · 2159 阅读 · 0 评论 -
Unity3d实现阿拉伯语适配,不规则特殊字符的处理
前言最近做了阿拉伯语的语言适配。记录一些比较麻烦的点。其实我也没太明白具体和其他语言有什么不同,唯一听懂的就是他们的语序是从右往左的(比如“你好!”,他们的阅读顺序是“!好你”)大概是这样子,具体原理也有很多大神在解释。但可能我没天赋,看的懵懵懂懂索性不去过分理解了。直接用按大神分享的插件就好了。插件用了前辈们都推荐的插件Arabic Support for Unity,免费的。没什么可说的。就一句调用代码,demo里面都有。AssetStore插件地址使用&问题这个插件能满足转载 2020-12-04 18:10:58 · 806 阅读 · 0 评论 -
UGUI 查找按钮名称
昨天在做项目的时候,按钮是符合条件才会出现的,所以我需要在点击按钮时获得这个按钮究竟是哪一个,在询问了N多人之后,还是百度告诉了我这个答案。string name = EventSystem.current.currentSelectedGameObject.GetComponent<Button>().name;string name = EventSystem.curr...转载 2019-12-13 10:55:22 · 401 阅读 · 0 评论 -
Unity 网络游戏同步方式
对于联网游戏来讲,同步的方式主要分为两种,状态同步、帧同步。1、状态同步:顾名思义,是指的将其他玩家的状态行为同步的方式,一般情况下AI逻辑,技能逻辑,战斗计算都由服务器运算,只是将运算的结果同步给客户端,客户端只需要接受服务器传过来的状态变化,然后更新自己本地的动作状态、Buff状态,位置等就可以了,但是为了给玩家好的体验,减少同步的数据量,客户端也会做很多的本地运算,减少服务器同步的频率以...原创 2019-12-06 18:18:00 · 1291 阅读 · 0 评论 -
Unity中事件函数的执行顺序【超详细,图+文】
在Unity脚本中,有一些事件函数会在脚本执行时按预定顺序执行。 该执行顺序如下所述:编辑Reset:Reset是用来初始化脚本属性的,在第一次脚本附在对象上的时候和按下Reset按钮的时候会被执行。第一次场景加载Awake:Awake方法总是在Start方法执行之前和在一个prefab初始化后被调用。(如果一个gameobject处于inactive的状态,则Awake不会被调用,...翻译 2019-12-06 15:14:40 · 414 阅读 · 0 评论 -
A* 寻路算法
A* 寻路算法概述虽然掌握了A*算法的人认为它容易,但是对于初学者来说,A*算法还是很复杂的。搜索区域(The Search Area)我们假设某人要从A点移动到B点,但是这两点之间被一堵墙隔开。如图1,绿色是A,红色是B,中间蓝色是墙。你应该注意到了,我们把要搜寻的区域划分成了正方形的格子。这是寻路的第一步,简化搜索区域,就像我们这里做的一样。...转载 2019-12-03 17:34:55 · 463 阅读 · 0 评论 -
Unity有限状态机、层次状态机和行为树的联系及区别
一:有限状态机有限状态机(英语:finite-state machine,缩写:FSM)又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。有限状态机算是Unity开发中一个比较重要的技巧了。在游戏中,我们可能会遇到各种各样的状态,这里我以一个人物为例,我们可能要经常判断人物的生命状态或者人物的运动状态,然后做相应的操作。简单的有限状态机...原创 2019-12-02 20:29:18 · 2202 阅读 · 2 评论 -
Unity3D游戏UI框架
UI框架前言前端开发中实际上大量的编码工作都在UI编码上,基本上占前端编码的70%左右。一个良好的UI框架决定了前端的开发效率和后期的维护成本。1:UI框架涉及内容BaseUI:UI界面的基类,定义了统一的UI功能接口(事件,开关,动画,声音)。 UIManager:管理UI的管理器,管理是否缓存UI对象,是否需要互斥UI对象,管理一些通用UI。 ResourceManag...转载 2019-11-14 14:38:02 · 1159 阅读 · 0 评论 -
游戏框架(Unity3D游戏客户端基础框架)
“游戏框架”作为整个游戏的框架,具有核心的地位,一个游戏的层次和后期维护性就取决于游戏框架。1:3D引擎框架图2:Unity3D游戏客户端基础框架一些通用的基础系统的框架搭建,其中包括:UI框架(UGUI+MVC)消息管理(Message Manager)网络层框架(Socket + Protobuf)表格数据(Protobuf)资源管理(Unity5.x的...原创 2019-11-14 14:25:04 · 4932 阅读 · 0 评论 -
Android获取OAID,并在Unity中进行调用
目录写在前面说明文档SDK使用过程:代码实现在Unity中进行调用写在前面 前段时间在登录vivo开放平台时,看见官方发公告了,以后逐渐要禁止获取IMEI,使用OAID(匿名设备标识符)来替代IMEI在app的作用(另外我们也可以获取VAID和AAID,下文会提到),所以找到官方文档,写个获取OAID的Demo,权当为以后替换IMEI做个铺垫。...原创 2019-11-06 20:24:24 · 2434 阅读 · 2 评论 -
Unity Prefab和GameObject的正向和逆向查找引用
我发现很多美工兄弟都爱问程序Unity3d为什么总丢材质? 我不排除U3d有BUG的情况下会丢材质?但是其实很多时候是人为操作而引起的。1.不保存就在上传这个操作太恐怖了,切记!!在 U3D里面你无论操作了什么,当你要上传svn的时候一定要先保存场景,Ctrl+S 切记切记!!如果不保存就上传很有可能就会丢材质。2.我的电脑明明没事,怎么你哪里就丢材质?我发现一个很转载 2016-10-26 16:56:28 · 4784 阅读 · 0 评论 -
Unity文件解析以及版本控制
刚开始使用unity做开发时,拿到一个范例工程先上传SVN,之后再自己做一些修改后,发现有非常多文件都有变化,这才知道有很多本地生成的文件,是不用上传的,但是不知道哪些才是需要共用的。之后又困扰于修改提交时看不到diff,无法把握每次修改内容。在网上多方查找,找到以下几篇算是比较系统的介绍unity的文件介绍,翻译转载过来备忘1、本文主要介绍工程文件结构,哪些目录、文件需要放在转载 2017-01-24 18:10:26 · 1024 阅读 · 1 评论 -
Unity动态字体文字破碎的解决方法(Dynamic Font Broken)
使用Unity的动态字体绘制文字的时候,打开两个ui界面的时候,后面的文字会显示破碎(完全乱掉)。我使用的ui插件是Daikon Forge,由于其label的更新机制问题,最终表现的结果可能比一个文本显示破碎更加糟糕。很可能文本控件会不停的刷新,要打开的新界面也显示不出来。 这个从根本上说,是由于Unity的Dynamic Font实现的不够智能。理论上NGUI也会有这样转载 2017-02-04 10:33:51 · 2600 阅读 · 0 评论 -
Unity中IK(反向运动学)的尝试
IK与FK对应,正向运动学就是根骨骼带动节点骨骼运动。而反向运动学就是反过来,由子节点带动父节点运动。 正常来说我是用不到它的,毕竟开发手游还不是次时代fps,玩家也不会关注你脚踩到地面上的细节表现。但是因为美术给出了个难题,所以稍微研究了下Unity中的IK。 正常人物动画的脚是稳定的定在地面上的,使用默认的人形骨骼没有问题。但是自己拉的骨骼就做不到,转载 2017-02-04 11:22:24 · 1760 阅读 · 0 评论 -
Unity中Avatar换装实现
技巧| Unity中Avatar换装实现Avatar换装是MMO游戏不可缺少的一部分,一个人物模型通常可拆分为头、身体、手臂、腿、武器等部分,如何将这些部分组合到一起呢?本文将阐述如何将在Unity中实现人物模型的换装功能。资源准备1.每一套装备模型必须使用同一套骨骼,并单独将骨骼数据保存成一个Prefab。红色部分为武器挂节点(也可以把武器做成一个SkinnedMes转载 2017-03-21 11:34:09 · 2075 阅读 · 0 评论 -
Unity - Apk包的代码与资源提取
最近在研究如何给Unity游戏进行加密,让别人不能轻易破解你的apk包,不过网上的加密方法都是有对应的破解方法~_~!!结果加密方法没找到好的,逆向工程倒会了不少。今天就来讲解如何提取一个没做任何保护的apk包中的资源和代码。 (1)打开apk包 首先,将你的apk包重命名为zip或者rar类型的文件,然后进行解压缩,如下:重命名为,然后进行解压缩,得到如下的目录内容:...转载 2018-11-09 19:43:44 · 4956 阅读 · 1 评论 -
Unity工程中 .Meta 文件的作用
如果你在游戏开发过程中使用诸如SVN的版本控制工具,那你必须得理解Meta文件的作用。在游戏场景中引用一个游戏资源,Unity并不直接按照文件路径和名称,而是使用一个独一无二的GUID来指向工程里的该资源文件。这个GUID储存在Unity工程为每个资源和文件夹生成的Meta文件里。 使用GUID的好处就是,即使你移动、重命名或者修改资源的内容,这个资源仍然可以通过GUID来被引用(只要GU转载 2017-01-24 18:08:02 · 3622 阅读 · 0 评论 -
Unity如何区分安卓、苹果设备是手机与平板?
iOS Unity 4.x 版本与Unity 5.x 系统函数略有不同: Unity 5.x 的方式为:UnityEngine.iOS.Device.generation;//******************2016.02.22 Bruce_Xu*********************#if UNITY_ANDROID float physicscre转载 2017-01-23 18:34:51 · 2457 阅读 · 0 评论 -
Unity3D的四种坐标系详细介绍
World Space(世界坐标):我们在场景中添加物体(如:Cube),他们都是以世界坐标显示在场景中的。transform.position可以获得该位置坐标。 Screen Space(屏幕坐标):以像素来定义的,以屏幕的左下角为(0,0)点,右上角为(Screen.width,Screen.height),Z的位置是以相机的世界单位来衡量的。注:鼠标位置坐标属于屏幕坐标转载 2016-10-04 17:18:35 · 1181 阅读 · 0 评论 -
Unity底层Graphics绘制接口
写这篇文章是因为前几天有个朋友问我的一个问题。它的意思是如何在屏幕中绘制贴图的一部分,也就是如何将材质裁剪。1.使用GUI的话效率不太高,每个部分都需要重新裁剪。2.使用Mesh网面效率是高了,但是需要每一部分网面增加MeshRenderer组件,效率还是会打折扣。今天我突然想到了Graphics,按照官方文档的说明它是底层绘制接口,所有GUI和网格的绘制底层都是它,我相信转载 2016-10-27 10:29:45 · 5375 阅读 · 0 评论 -
Unity Text字体花屏
今天我同事说在老项目用的是unity4.7.2打包发布韩文和泰文,偶尔会出现字体花屏的问题,但是中文是好的。(我也不知道怎么解释,只能靠猜吧)我们用的TTF动态字体,Text每次赋值的时候Unity会生成贴图,以及保存每个字的UV信息,那么显示字体的时候根据UV信息去生成的贴图里取最终渲染在屏幕上。那么出现花屏很可能就是贴图更新了,而还在用老的UV取图,所以就取不到了。这个时候需要重新刷新一下Te转载 2016-10-27 10:03:21 · 2163 阅读 · 1 评论 -
Unity3D 使用 C#合成解析XML与JSON
XML与JSON在开发中非常重要, 其实核心就是处理字符串。一个是XML的字符串一个是JSON的字符串,尤其是在处理网络请求的时候,肯定是要用的。另外现在JSON非常的流行,我写了一个简单的例子融合了XML与JSON的合成与解析,希望大家喜欢!首先注意头文件,LitJson是处理JSON的第三方库,最后我会给出下载地址。using UnityEngine;using Sys转载 2016-10-26 17:46:45 · 523 阅读 · 0 评论 -
Unity 获取BoxCollider八个点的世界坐标
我们想把场景中的BoxCollider的坐标点导出出来让服务器也能用。虽然BoxCollider自身的大小可以获取出来,但是如果有父对象,并且有坐标的变化那算起来就比较麻烦了。还好unity提供了一个方法,真的很便捷。如下图所示,我用了8个标记点来标记获取到的boxcollider的坐标。旋转、缩放都可以计算出正确的坐标点来。using UnityEngine;using S转载 2016-10-26 17:14:45 · 2727 阅读 · 1 评论 -
Unity 制作Loading详解
游戏中的Loading现在都做得很漂亮,但是归根究底就两种类型,静态Loading和动态Loading。静态Loading可能就是一张背景图。而动态的Loading就是在读取的同时有一个东西在“转圈”。1.静态Loading:优点:读取场景使用同步的方法就可以,因为是同步方法所以读取的速度是最快的,也不用更新界面,因为同步执行方法的时候程序在等待读取结束。执行Applicati转载 2016-10-26 16:20:54 · 962 阅读 · 0 评论 -
Unity 获取摄像机的视口区域
摄像机分为两种,一种是正交摄像机还有一种是透视摄像机。正交摄像机无论远近它的视口范围永远是固定的,但是透视摄像机是由原点向外扩散性发射,也就是距离越远它的视口区域也就越大。那么我们如何获取距离摄像机任意距离的视口区域呢?如下图所示,分别用红色和黄色两种颜色将计算出来的视口区域标记了出来。下面上代码,把如下脚本挂在摄像机出直接运行游戏即可看到。using UnityEngine;转载 2016-10-26 16:04:58 · 4413 阅读 · 0 评论 -
Unity 监听Project视图结构变化的事件
今天无意间发现了一个更好的方法来监听Project视图中资源的 创建 删除 移动 保存。把如下脚本放在unity工程中即可,推荐放在Editor目录下。// Originally written by Lasse Makholm, I believe.// Changed a bit for non-Team-license systems by Jamie Fristrom ( ha转载 2016-10-26 14:54:34 · 1125 阅读 · 0 评论 -
Unity 自动计算所有物体包围盒的中心点
美术在做场景的时候可能会出现这个情况? 如下图所示,这个地块的中心点远离模型十万八千里?与其相信美术或者策划我觉得程序要更相信自己!! [MenuItem ("MyMenu/Do Test")] static void Test () { Transform parent = Selection.activeGameObject.transform; Vecto转载 2016-10-26 14:40:12 · 3477 阅读 · 0 评论 -
Unity3D 将场景导出XML或JSON或二进制并且解析还原场景
导出Unity场景的所有游戏对象信息,一种是XML一种是JSON。本篇文章我们把游戏场景中游戏对象的、旋转、缩放、平移与Prefab的名称导出在XML与JSON中。然后解析刚刚导出的XML或JSON通过脚本把导出的游戏场景还原。在Unity官网上下载随便下载一个demo Project,如下图所示这是我刚刚在官网上下载的一个范例程序。 接着将层次视图中的所有游戏对象都封装成Pref转载 2016-10-26 19:43:07 · 2509 阅读 · 0 评论 -
Unity 框选效果
几次看见有人问框选物体的做法,之前斑竹也介绍过,用画的框生成的视椎,用经典图形学的视锥裁剪就能做到。视锥裁剪资料学习:http://www.cnblogs.com/dragon2012/p/3891519.html在unity里实现,其实很简单,因为有两个前提:1.画的方框始终是在屏幕空间进行的,而屏幕空间其实就是摄像机的视锥空间的投射了,不需要另外计算视锥。2.unity转载 2016-11-01 16:47:30 · 727 阅读 · 0 评论 -
NavMeshAgent
原文http://docs.Unity3D.com/ScriptReference/NavMeshAgent.html 继承自BehaviourVariablesacceleration 类型:float。代理的最大加速度。代理并不是精确的按照被navigation system计算出来的直线片段行走,而是使用路点作为中间目的地。这个值是转载 2016-11-17 13:33:07 · 2067 阅读 · 0 评论 -
垂直同步、绘制效率、显示器刷新频率与帧率
从后缓存到显示器 最近在看D3D的架构,在这过程中对帧率这个一直认为很简单的东西有了更多的理解。在过去看来,帧率就是显卡渲染一帧所用时间的倒数,现在看来远远不是这个样子。要真正理解这个问题要从绘制数据从显存中到屏幕的这一个过程来说起,下图就是这个过程 显存中存在前后缓存,前缓存就是屏幕上最终看到转载 2017-02-16 18:18:53 · 679 阅读 · 0 评论 -
Unity多线程(Thread)和主线程(MainThread)交互使用类——Loom工具分享
熟悉Unity的developer都知道在Unity中的线程不能使用Unity的对象,但可以使用Unity的值类型变量,如Vector3等。这样就使得线程在Unity中显的很鸡肋和蹩脚,因为很多函数很都是UnityEngine类或函数的调用的,对于哪些是可以在多线程使用,风雨冲进行了如下总结:0. 变量(都能指向相同的内存地址)都是共享的1. 不是UnityEngine的API能在转载 2017-01-16 17:57:57 · 1828 阅读 · 0 评论 -
Unity3D中Random.seed属性解析
UnityEngine.Random.seed 属性:随机数种子基本语法:public static intseed { get; set; }功能说明:此属性用来设置随机数的种子。在计算机中产生随机数的方法有很多,但每种方法都需要一个种子,例如经典的伪随机数产生函数:f(x)=f(x-1)*a+b,其中a、b为已知的固定数值,那么只要知道某个x对应的f值,就可以推算出所有的值。通转载 2017-02-06 16:50:40 · 3349 阅读 · 0 评论 -
Unity3d 动画重定向 动力学骨骼插件DynamicBone
模型导入装配什么的就不说了。1.要做动作的模型,Rig----从这个模型创建Avatar Animations---取消导入动画。2.有动画的模型,Rig----从其他模型创建Avatar,选中新模型的Avatar。3.动画文件选择 Rig----从这个模型创建Avatar。全部选中humanoid。动力学骨骼插件DynamicBone:1.把DynamicBone脚本放到角色上。2.Root...转载 2017-02-06 16:32:43 · 6371 阅读 · 0 评论 -
关于Unity启动时间过长(启动黑屏时间长)的问题
Unity启动确实比其他引擎生成的游戏包慢些。关键是你启动的时候还要等上一段时间才显示Splash那个logo图。最近项目有个蛋疼得需求,需要在启动界面加进度帧动画。。我也是醉了。刚开始的思路:用Unity单独做个启动场景,让Splash那张图用成纯黑。那么问题来了,除了Unity刚启动的黑屏+显示Splash的黑图,再到显示loading动画界面至游戏场景加载出来,这时间都在十多转载 2017-01-10 17:38:25 · 3036 阅读 · 1 评论 -
Unity之在UI界面上显示3D模型
1、创建一个3D摄像机,渲染3D模型。(我为了方便就把模型放到了Camera的下面,你可以不这样)2、在2D里面指定一个TopLeft和BottomRight,用来表示模型渲染到UI上面的区域。3、在之前的3D摄像机上挂上UIViewPort脚本,几个变量如图所示。4、结果就是这样。需要注意的地方:1、3D摄像转载 2017-02-04 18:30:01 · 18267 阅读 · 2 评论 -
Unity 通过Mesh网格渲染绘制图形与字体
任何一个模型都是由诺肝网格面组成,而每一个面又有若干个三角形组成,也就是说,模型是由若干个三角形面组成的;(字体和图片也是如此)组成简单模型的组件需要包含以下几个:MeshImage脚本代码如下:using UnityEngine;using System.Collections;public class MeshImage : MonoBehaviour {原创 2016-12-09 15:46:22 · 4998 阅读 · 0 评论 -
Unity 提前获取Text的宽度
Unity提供的两个获取文件宽高的方法 preferredWidth 和preferredHeight 必须是文字在Text组件中渲染出来以后才能取到。因为我们游戏的聊天框中是可以输入表情,所以图文混排工具需要支持自动换行的功能。那么这里问题就来了我需要提前获取Text的宽度,这样我才能知道文字什么时候进行换行。总体来说和NGUI的思路完全一样。提前把文字渲到材质上,这样就可以取出来宽度了转载 2016-12-08 17:24:30 · 5581 阅读 · 0 评论 -
Unity3D 手游开发中所有特殊的文件夹
这里列举出手游开发中用到了所有特殊文件夹。1.EditorEditor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor就可以。比如目录:/xxx/xxx/Editor 和 /Editor 是一样的,无论多少个叫Editor的文件夹都可以。Editor下面放的所有资源文件或者脚本文件都不会被打进发布包中,并且脚本也只能在编辑时使用。一般呢会把一些工具类的脚转载 2016-11-25 13:30:08 · 508 阅读 · 0 评论 -
Unity 粒子缩放代码的实现
Unity中实现代码控制粒子的大小:Demo下载地址:http://download.csdn.net/detail/e295166319/9664243效果图如下所示:核心代码示例://This script will only work in editor mode. You cannot adjust the scale dynamically原创 2016-10-26 11:23:51 · 3489 阅读 · 0 评论