Unity
文章平均质量分 50
萌新求带
Gamer.
展开
-
如何实现自定义的Timeline轨道
aa转载 2021-09-09 00:11:23 · 1052 阅读 · 0 评论 -
关于Unity贴图的meta文件莫名其妙变化的问题
背景:项目中新导入资源会经过ImportAssetProcess脚本进行一番处理,同时项目使用cacheserver加快导入速度问题:近期项目中的贴图出现很多meta文件的变更,大部分贴图只要经历了reimport,都会有几项属性发生改变。如下图所示:这正是变更之前的值,由此可知,是OnPreprocessTexture这个方法搞的鬼。但是OnPreprocessTexture并没有对这几项属性做任何更改,他们为什么还是变了?我们来做个进一步的测试:只输出anisoL..原创 2021-08-30 11:21:17 · 1751 阅读 · 0 评论 -
关于同一个GameObject上面的多个monobehavior的Awake顺序问题
今天做一个需求,这个需求会在同一个gameobject上面挂载多个monobehavior脚本。这几个脚本在Awake时要获取彼此的实例,如下图所示:三个类的Awake脚本大概是这样:那么问题来了,1. 已知Unity的脚本Awake是有顺序的,那么这三个先后顺序是固定的吗?2. 假如三个脚本先后Awake,那么第一个Awake的类会不会得不到另外两个类的实例?我连续运行了5次,都是下面的结果:Awake的顺序是3->2->1。由此结果可以推导出第二个原创 2021-06-23 23:22:56 · 816 阅读 · 6 评论 -
Unity定位安卓闪退问题
具体参考 http://www.xuanyusong.com/archives/4441原创 2020-11-04 16:28:43 · 1645 阅读 · 0 评论 -
Unity3D中Layers和LayerMask解析
Unity中是用int32来表示32个Layer层。int32表示二进制一共有32位(0—31)。在Unity中可编辑的Layer如下图所示:在Unity中每个GameObject都有Layer属性,默认的Layer都是Default。在Unity中可编辑的Layer共有24个(8—31层),官方已使用的是0—7层,默认不可编辑!LayerMask实际上是一个位码操作,在Uni...转载 2020-04-14 20:43:21 · 267 阅读 · 0 评论 -
Unity文件、文件引用、Meta详解
本文详细讲解了Unity引擎各种类型文件的信息内容、用法和使用场景,帮助研发团队对于引擎文件进行更好的理解和掌握。一、Unity项目中Assets目录下常见的文件类型在Unity3d中一般存在这么几种文件:资源文件 代码文件 序列化文件 文本文档 非序列化文件 Meta文件1、资源文件资源文件指一些创建好并且不再修改的文件。这样的文件一般是美术设计师和音频视频设计师...转载 2020-04-06 15:59:43 · 601 阅读 · 0 评论 -
Unity Time类解析
(看不清图片的话,把图下载下来看吧,csdn排版太难用了,索性上传了图片)原创 2019-10-14 14:16:12 · 148 阅读 · 0 评论 -
Unity里如何停掉Coroutine, Invoke的函数的执行,以及脚本的Start()和Update()
先列出所有可选的方法:StopAllCoroutines(); //只对Coroutine起作用,会停掉此脚本里所有的Coroutine。this.enable = false; // 禁掉脚本,其实只是禁掉Start(), Update()函数,脚本里其他的东东还是有效。this.gameobject.SetActive(false); //脚本所挂靠的gameobject被禁掉了,在场...原创 2018-03-27 11:41:57 · 3508 阅读 · 0 评论 -
Unity判断网络是否连接 以及 判断是否连接WiFi
在项目或者游戏中经常需要用到判断网络是否连接,是否是在wifi状态或者是在移动流量下,unity自己已经提供了api给我们使用了。NetworkReachability 网络可达性描述网络的可达性选项。Values值NotReachableNetwork is not reachable 网络不可达。ReachableViaCarrierDataNetworkNet转载 2018-03-26 08:45:48 · 598 阅读 · 2 评论 -
Unity3D Mesh绘制(一)
什么是MeshMesh是Unity中的一个组件,称为网格组件。通俗的讲,Mesh是指模型的网格,3D模型是由多边形拼接而成,而一个复杂的多边形,实际上是由多个三角面拼接而成。所以一个3D模型的表面是由多个彼此相连的三角面构成。三维空间中,构成这些三角面的点以及三角形的边的集合就是Mesh。如下图所示:mesh.png所以建模型就是就是要画一些列的三角形,而定位一个三角形就是只需要3个顶点而已。很简...转载 2018-03-05 22:20:47 · 3207 阅读 · 0 评论 -
Unity游戏开发——C#特性Attribute与自动化
这篇文章主要讲一下C#里面Attribute的使用方法及其可能的应用场景。比如你把玩家的血量、攻击、防御等属性写到枚举里面。然后界面可能有很多地方要根据这个枚举获取属性的描述文本。比如你做网络框架的时候,一个协议号对应一个类的处理或者一个方法。比如你做ORM,一个类的属性是否映射持久化文件中的属性,映射过去的属性名是什么。1、什么是Attribute转载 2018-02-07 10:12:02 · 658 阅读 · 0 评论 -
Shader入门教程
学习Unity有一段时间了,都说Unity想要进阶得学会Shader编程,因此花了一阵子来学习Shader编程。学了之后才发现,Shader并没有我原先想的那么复杂,掌握它的原理和语法后,我们也能用shader编写出自己想要的特效,好了,下面我开始详细介绍shader的入门知识。我在这篇文章中主要介绍的内容有 ①Shader基础知识 ②Unity中Shader知识介绍 ③Sur转载 2018-02-06 20:51:23 · 457 阅读 · 0 评论 -
游戏设计的基准原则(二)——个人理解
一转眼,大半年就过去了。这其中笔者收获诸多,但是多没有记录,导致现在都忘得差不多了。_(:з」∠)_于是乎,决定趁着写年终总结的热乎劲儿,来在码一篇博客。记录下自己在开发第二款游戏《飞刀挑战》后的所思所得。先来介绍下自己的游戏,游戏玩法为点击屏幕,将下方飞刀仍到旋转的飞盘上,直到飞刀全部用完,且不能撞到其他飞刀。其余技术层面的不多谈了,这款游戏带给我的最大收获就是 :要发散自己的思维游戏难度的设计...原创 2018-02-09 15:28:48 · 938 阅读 · 1 评论 -
Unity3D判断当前所在平台
官方文档:http://docs.unity3d.com/Manual/PlatformDependentCompilation.html文档上有详细说明,我在这里再补充两点:如果想判断多个条件,可以用 || 或 & 来组合例如:#if UNITY_IOS || UNITY_ANDROID...//这里的代码在IOS和Android平台都会编译#endif#if转载 2018-01-19 14:22:58 · 1623 阅读 · 0 评论 -
Unity3D工程源码目录
https://www.cnblogs.com/AaronBlogs/p/6816842.html转载 2018-01-18 16:18:59 · 792 阅读 · 0 评论 -
Unity 5.x的专用插件推荐
Unity 5.x的专用插件推荐unity3d脚本插件本帖集合了Unity 5.x的专用插件,如果是使用 4.6.x 的伙伴们切勿下载安装。Sprite Color FX 2.0 - 像素特效http://www.narkii.com/club/thread-383520-1.htmlHoney Hex Framework 1.5.2 - 蜂巢式转载 2018-01-26 11:54:56 · 273 阅读 · 0 评论 -
Unity安卓移动设备显示Debug.Log信息
最近忙着开发Unity原生插件,由于算法组先提供了安卓库(略反人类),调试的过程遇到了史无前例多的Debug需求。参考了一些插件中采用的公共消息管理,比如用一个静态的回调函数或者单独写一个类封装的,这里分享一下在Android上显示Debug.Log()消息的方法。首先在Unity中新建一个场景,挂上一条Debug信息。"Build And Run"到安卓真机。[c转载 2017-12-05 13:41:24 · 803 阅读 · 0 评论 -
Camera.ScreenToWorldPoint
Camera.ScreenToWorldPointVector3 ScreenToWorldPoint(Vector3 position);将屏幕坐标转换为世界坐标。如何转换?假如给定一个所谓的屏幕坐标(x,y,z),如何将其转换为世界坐标?首先,我们要理解摄像机是如何渲染物体的:摄像机对游戏世界的渲染范围是一个平截头体,渲染边界是一个矩形,用与near cli原创 2017-11-18 15:05:46 · 206 阅读 · 0 评论 -
对Unity协程的理解
看了siki老师的视频,加深了对协程的理解。如果是普通方法,则按照下图方式执行。 比如: void Start () { print(1); Hello(); print(2); } void Hello() { print("hello"); print("...原创 2017-07-21 18:18:50 · 383 阅读 · 0 评论 -
游戏中的随机地形生成算法(三)
在上篇教程中,我们已经把Map中的每个点都实实在在的画了出来,四个点形成一个正方形。其中,正方形的每条边都有一个中点。那么,这节课我们来把该连在一起的点连起来,绘制我们的mesh。 public class Square { public ControlNode topLeft, topRight, bottomLeft, bottomRigh原创 2017-10-16 15:00:53 · 2353 阅读 · 2 评论 -
Unity3d vector3.forward和transform.forward的区别
在unity3d中有2个forward,一个是vector3.forward和transform.forward,这两个forward其实完全不一样。他们之间的区别主要体现在在不同坐标系时的反映上。我们分别对比一下 vector3和transform两个向量的forward 在 self自身坐标系 和 world世界坐标系 中的表现,我们用transform.tra转载 2017-10-16 09:15:42 · 701 阅读 · 0 评论 -
Unity工程里的那些东西
1、特殊文件夹(unity doc : Special Folders)Unity工程根目录下,有三个特殊文件夹:Assets、Library、ProjectSettingsAssetsUnity工程中所用到的所有Asset都放在该文件夹中,是资源文件的根目录,很多API都是基于这个文件目录的,查找目录都需要带上Assets,比如AssetDatabase。LibraryUnity会把Asset下...转载 2018-03-27 15:28:23 · 3409 阅读 · 0 评论 -
HideFlag隐藏标识
如何让一个Gameobject的属性在运行时,不可以在属性面板上手动的修改呢?文档:http://www.ceeger.com/Script/Enumerations/HideFlags/HideFlags.html测试环境:Unity 5.3.6f1 (windows x64)经测试HideFlag对gameobject和自定义都有效,因为此属性是UnityEngine.转载 2018-04-02 17:58:43 · 330 阅读 · 0 评论 -
Unity屏蔽Debug
我们使用unity开发与测试时,往往需要Debug来输出调试信息。而当发布正式包时,并不需要这些信息。那要怎么去除它们呢?一条条语句删吗?这显然不科学,费时费力还可能会遗漏。身为万能的程序员,遇到这种问题我们当然要去造(zhao)轮子了。如果你是Unity 5.3 以下的版本,那么你可以参照这篇文章:http://www.xuanyusong.com/archives/原创 2018-03-27 23:36:47 · 1601 阅读 · 2 评论 -
Unity加载配置文件的几种方式
从业以来,也做了有将近十款游戏了吧。其中各个游戏都需要去读取配置,无论这个配置是本地的还是从服务器获取的。而配置的读取方式有很多种,我自己也用过很多种,今天特地来总结一下各种读取方式的实现,以及它们的优缺点吧。先来看看有哪几种常用的加载方式吧!从本地数据库读取配置文件从Excel文件中读取配置文件从json文件中读取配置文件从xml文件中读取配置文件从csv文件中读取配置文件使用...原创 2019-09-24 13:51:07 · 5521 阅读 · 3 评论 -
Unity5.X实现混淆
在Unity5.6.1中,无法对特定工程指定混淆文件,只能去修改Unity目录下的Editor\Data\PlaybackEngines\AndroidPlayer\Tools\UnityProGuardTemplate.txt文件。这是一个全局的混淆文件,也就是你所有使用Unity5.6.1的工程,都会受到这个文件的影响。在Unity5.6.5中,已经开始支持自定义混淆文件,不过U...原创 2019-08-16 16:07:58 · 1025 阅读 · 0 评论 -
使用gvrsdk遇到的全面屏适配问题
话说之前写了一篇灰常详细的文档,可不小心弄丢了。只能重新再写一份o(╥﹏╥)o。问题描述详见https://github.com/googlevr/gvr-unity-sdk/issues/976大致意思是不知道哪里出了问题,可能是gvrsdk的问题,也可能是国内厂商rom的问题。反正最后渲染出来的结果不正确,总体朝右偏移了。我之前使用的gvrsdk版本是GVR SDK for...原创 2019-08-16 15:53:39 · 311 阅读 · 0 评论 -
Unity实现有限状态机
本文参考【游戏设计模式】之三 状态模式、有限状态机 & Unity版本实现只不过原文是使用c++实现,本文使用Unity和C#实现。游戏开发过程中,各种游戏状态的切换无处不在。但很多时候,简单粗暴的if else加标志位的方式并不能很地道地解决状态复杂变换的问题,这时,就可以运用到状态模式以及状态机来高效地完成任务。状态模式与状态机,因为他们关联紧密,常常放在一起讨论和运用。而本文将对...原创 2019-05-26 15:06:47 · 1070 阅读 · 2 评论 -
Unity去除armv8目录
前些日子,因为项目中引用的某些aar包包含armv8的.so文件,所以在打包生成的apk包中会有armv8的目录,其实我们是不需要这个目录的。去除它可以减小包的体积。首先,我们需要弄清楚apk下的libs这几个目录是干嘛的,其实每个目录对应的是一种CPU架构:armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它. arm...原创 2019-05-12 12:24:50 · 1512 阅读 · 0 评论 -
[C#] 时间函数: 自1970.1.1起至今的毫秒数(与Java一致)
C#中没有这个函数,所以从网上借鉴了一个。记录一下,备用。/// <summary> /// 返回当前时间的毫秒数, 这个毫秒其实就是自1970年1月1日0时起的毫秒数 /// </summary> public static long currentTimeMillis() { return (System....原创 2018-11-27 22:21:38 · 2252 阅读 · 0 评论 -
【Unity3D基础知识】——Stats窗口
Stats窗口 ##Stats窗口,全程叫做 Rendering Statistics Window , 即渲染数据统计窗口,它会实时统计数据。FPS(Time per frame andFPS)frames per seconds 表示引擎处理和渲染一个游戏帧所花费的时间,该数字主要受到场景中渲染物体数量和 GPU 性能的影响,FPS 数值越高,游戏场景的动画显示会更加平滑和流畅。 一般来说,超...转载 2018-05-24 20:26:43 · 1571 阅读 · 0 评论 -
Unity工程中 .Meta 文件的来龙去脉
如果你在游戏开发过程中使用诸如SVN的版本控制工具,那你必须得理解Meta文件的作用。在游戏场景中引用一个游戏资源,Unity并不直接按照文件路径和名称,而是使用一个独一无二的GUID来指向工程里的该资源文件。这个GUID储存在Unity工程为每个资源和文件夹生成的Meta文件里。 使用GUID的好处就是,即使你移动、重命名或者修改资源的内容,这个资源仍然可以通过GUID来被引用(只要GUID不变...转载 2018-05-15 20:35:40 · 268 阅读 · 0 评论 -
Unity3d 游戏被强制暂停的判断与处理
大家在手机上玩游戏的时候时,会碰到诸如来电话、锁屏、闹钟等一系列导致游戏被强制暂停的情况,在此情况下,开发人员如何针对游戏被强制暂停这种情况作出一定的判断和处理,此时就要用到两个方法:OnApplicationPause(bool)方法:当程序转为暂停时,bool为true,当程序转为继续时,bool为false;此方法会自动执行,只需要在方法体内写好自己根据bool来执行的逻辑就可以了。OnAp...转载 2018-05-18 16:28:01 · 1330 阅读 · 0 评论 -
The file 'MemoryStream' is corrupted! 的解决办法
The file 'MemoryStream' is corrupted! Remove it and launch unity again![Position out of bounds! 20 > 16]有时候我们会遇到这个报错,然后整个U3D就崩溃了,原因是在于某些Prefabs的脚本引用丢失了,这个时候,只要把项目的所有丢失引用的Prefabs问题都解决了就OK了。那转载 2018-04-27 15:58:24 · 2527 阅读 · 0 评论 -
Unity GameObject.activeSelf, activeInHierarchy, SetActive和SetActiveRecursively区别
activeSelf(read only只读):物体本身的active状态,对应于其在inspector中的checkbox是否被勾选activeInHierarchy(read only只读):物体在层次中是否是active的。也就是说要使这个值为true,这个物体及其所有父物体(及祖先物体)的activeself状态都为true。一个物体要在场景中是可见的(不是隐藏的),那么不仅仅转载 2018-05-03 09:25:25 · 1459 阅读 · 0 评论 -
Unity使用C#的多线程
在unity里边使用多线程做一些事情是非常好的,比如解压资源 更新资源等。因为单开线程的话 不会影响主线程卡顿,这样UI就不会卡了。但是开的线程里边不能执行unity主线程的mono代码。线程启动后,执行完毕自动结束该线程、可以同时启动多个线程做事。代码如下: using System.Threading;void StartThread() { Thread athread ...转载 2018-04-18 19:42:19 · 443 阅读 · 0 评论 -
Unity3D - 图片资源导入的一些基础知识
在上一篇文章里 Unity3D - 你导入的资源,并不是Unity使用的资源 介绍过,Unity使用的资源是你无法直接操作的,那么对于图片资源,我们应该如何去处理和优化工作流程呢?图片资源的分类在Unity中,图片一般可以分为两种:贴图(Texture)和精灵(Sprite)。我们可以简单的理解为3D(模型使用的)图片和2D(UI使用的)图片。在可以直接选择Texture Type转载 2018-04-11 13:47:43 · 2145 阅读 · 0 评论 -
mono.dll caused an Access Violation (0xc0000005) in module mono.dll at 0033:e6b552d6.
最近一直在被其他项目组借去做项目,忙完一阵子之后回归自己的项目组,发现原来的项目打不开了。打开后Unity直接弹崩溃窗口,查了一下崩溃日志:Unity Editor [version: Unity 5.6.3f1_d3101c3b8468]mono.dll caused an Access Violation (0xc0000005) in module mono.dll at 0033:...原创 2018-03-28 10:22:07 · 6543 阅读 · 0 评论 -
【Unity】DateTime各种时间字符串
各种表示时间的方法 谢谢网络上的大神 此片为转载的文章DateTime.Now.ToShortTimeString() DateTime dt = DateTime.Now; dt.ToString();//2005-11-5 13:21:25 dt.ToFileTime().ToString();//127756416859912816 dt.ToFileTimeUtc(转载 2017-11-08 14:20:14 · 844 阅读 · 0 评论 -
Unity快捷读取XML、JSON文件
看了网上各种读取教程,挺厉害的。但不如我这个封装好的方便,现在我来记录下用法。首先,下载我这个GameUtils.dll文件,稍后放上地址。把文件复制到Unity工程的Assets目录下的任意文件夹里,Unity会自动编译这个文件。然后就是脚本了,我来举一个简单的例子。现在我要创建一个任务系统,任务通过读取XML显示在游戏中,那么我们先来看下任务XML文件:原创 2017-08-01 09:31:54 · 559 阅读 · 0 评论