unity3D学习
文章平均质量分 52
随风吹笛
这个作者很懒,什么都没留下…
展开
-
unity报错Assertion failed on expression
写编辑器时有时候会遇到类似于这样的报错,比如前面介绍的日志重定向,双击的时候就会出现这个错误。这个问题要解决先要定位到具体的代码,然后将这行代码延时执行,延时的时间是到编辑器GUI更新完后,unity中有对应的回调,把代码放到回调中执行即可。比如日志重定向对应的修改到如下:EditorApplication.delayCall = delegate(){ AssetDatabase.O...原创 2018-03-26 19:44:15 · 53881 阅读 · 7 评论 -
动态编译C#代码
项目开发中,有时候会使用到动态生成代码,然后根据动态生成的代码再执行相应的操作,C#提供了动态代码的编译,利用这个特性可以实现动态生成代码,然后执行代码。 直接上代码,c#版本[MenuItem("Test/CreateCodeDll")] public static void CreateCodeDll1() { CSharpCodeProvider p原创 2016-05-11 19:46:49 · 3797 阅读 · 0 评论 -
Profiler中WaitForTargetFPS详解
WaitForTargetFPS 该参数一般出现在 CPU开销过低,且通过设定了目标帧率的情况下(Application.targetFrameRate)。当上一帧低于目标帧率时,将会在本帧产生一个WaitForTargetFPS的空闲等待耗时,以维持目标帧率。解析:该项在Unity引擎的主循环中其实是最早执行的,即引擎实际上是根据上一帧的CPU耗时,在当前帧中通过增补WaitForTargetF转载 2016-03-21 09:47:38 · 14072 阅读 · 0 评论 -
Unity中预览lua脚本
unity中选中脚本后,右侧的inspector可以看到脚本的文本信息,但是lua作为一种文本却并不能被unity识别从而产生预览效果,如图 c#脚本预览效果 lua脚本预览效果此时要想产生类似的效果,需要自己手动编写代码来实现,代码很简单,直接上代码using UnityEngine;using System.Collections;using UnityEditor;using Sys原创 2016-02-17 19:02:27 · 2051 阅读 · 0 评论 -
Unity如何在Editor下执行协程(coroutine)
在处理Unity5新的AssetBundle的时候,我有一个需求,需要在Editor下(比如一个menuitem的处理函数中,游戏没有运行,也没有MonoBehaviour)加载AssetBundle。而加载AssetBundle的时候又需要使用yield return www;这样的协程用法。所以就有了一个需求,在Editor下执行协程。我从网上找到一个EditorCoroutine,其代码如下:转载 2016-03-01 20:19:41 · 4464 阅读 · 0 评论 -
隐藏对象(active为false时)查找
1.前置条件Unity中常用到查找对象,非隐藏的、隐藏的,各种方法性能有高有低,使用又有各种条件限制。在此对查找的性能和条件进行分析。开发时遇到的主要问题是查找隐藏对象。没有完美的查找方法,只有最合适的查找方法最后附带上测试代码2.相关APIGameObject.Find Transform.Find GameObject.FindWithTag GameObject.FindGameO转载 2016-01-11 17:13:40 · 8303 阅读 · 0 评论 -
Unity调用外部EXE或Shell命令
1、开门见山的需求 有的时候,我们想把一些外部命令集成到unity中,比如,你想通过点击Unity中的一个按钮,就更新SVN(假设该项目是受SVN管理的)。 那么,就涉及到一个Unity调用外部可执行文件、bat/shell等。 这个需求是挺常见的,也是不难实现的。2、简单明了的实现 我们先封装一个命令调用的函数:private static void processCommand(stri转载 2015-12-23 10:03:41 · 4321 阅读 · 0 评论 -
Excel文件读取解析
游戏中很多数据都是策划配置的Excel数据表,在使用中,我们一般会转化成csv文件,但是每改一次都要转一次也是麻烦,不如直接将Excel读取出来。怎么解析呢,我们需要使用到一个插件,插件地址如下 http://exceldatareader.codeplex.com/ 可以下载最新版引入到工程。在一个就是鉴于中文编码问题,这里的Excel要求是xlsx格式的,这样读出来的数据就不会出现乱码问题。原创 2016-01-07 09:56:19 · 5444 阅读 · 0 评论 -
Protobuf改subset模式缺少dll问题
protobuf是google 的一种数据交换的格式,它独立于语言,独立于平台。游戏中用于客户端与服务端的数据交互以及简单的数据存储都很方便。prototbuf的导入,去github下载最新的版本。然后有两种方案,一种是直接将源码放入工程,一种是编译成dll再放入工程。关于第二种,网上有说法是用dll的方式在Android平台下没问题,但是在IOS平台下会有问题,用不了。那就用第一原创 2016-01-16 18:52:31 · 1402 阅读 · 0 评论 -
Unity立体几何 点到直线距离计算
Unity是一款3D引擎,设计一款3D游戏时,经常会涉及到3D的运算,比如两点之间的距离,向量的一些操作等。Unity已经封装好了一些常用函数在Vector3和Plane类中,如两点之间的距离,向量之间的夹角,向量的投影计算等。这里说一下的是点到直线的距离,根据投影及勾股定理计算。 /// <summary> /// 点到直线距离 /// </summary> ///原创 2015-09-12 19:36:25 · 7536 阅读 · 0 评论 -
腾讯游戏分享汇:天天飞车六大研发经验
序言:转型手游,问题比想象要复杂。一些问题是研发阶段就能预见的,但是有些问题上线后才发现远超出我们的想象。从端游转型做手游变化远没有想象简单 可能和公司内很多手游研发团队一样,我们也是从传统PC端游转型做手游的。 我们一度认为手游研发会比较轻松,技术上跟端游比起来相对容易, 人力上也不需要太多投入。但真正开始做之后才发现无论技术还是产品各方面远没有我们想象的简单,好在我们的核心成转载 2015-09-06 17:04:02 · 973 阅读 · 0 评论 -
Protobuf的自动打包
该源代码是根据一网友发布的代码改过来的,原地址:在Unity5中使用Protobuf,代码的修改与发布已联系原作者同意。感谢原作者开源提供此方案网络游戏开发中网络数据协议是一个很重要的组成部分,网络数据协议目前常用的有JSON,自定义数据结构,Protobuf等第三方提供的数据格式。JSON主要是传输的字符串,优点是阅读方便,出错了比较容易排查,缺点是同样的数据需要的字节数要多。自定义数据结构字节数原创 2016-05-16 20:32:29 · 2227 阅读 · 0 评论 -
Unity 5 官方打包管理工具 Asset Bundle Manager
Unity5在Asset bundle 打包管理上采用了全新的方式,不需要再对每个文件进行MD5比对,unity已经帮我们做好了,对需要打包的资源AssetBundle属性就行了,同事Unity还提供了一个打包管理工具 Asset Bundle Manager。官方文档对这个工具的说明及使用方式,地址 官方的工具项目工程地址说下使用方式,工具提供了一键打包,本地加载模拟,网络加载模拟。打包很简单,原创 2016-06-02 20:36:54 · 12596 阅读 · 2 评论 -
Unity中如何中断C#脚本的无限循环
无限循环似乎应该很容易避免。但时不时就会遇到它的变种。曾经有次因为错误的随机函数返回了1.000001这个值导致无限循环。还有就是衰退的网格恰好给没有做输入检测的while(1) { d += 1.0; if(d>10.0) break; /* .. */ } 循环发送了NaN这个数据。再后来还有坏掉的数据结构中贯穿了一个规则假定了current = current.next;并认为这个规则一定会有转载 2016-06-24 18:48:16 · 6499 阅读 · 0 评论 -
Live2D的简单使用
看了下Live2D,研究了下使用,再次简单的总结下,以便后来查看。 官方网站:http://www.live2d.com/en/ SDK:https://live2d.github.io/#unity导入后里面有个Samples文件夹,里面是官方示例,每个例子有Description,描述这个例子是做什么的。 Animation是动画的示例,使用的是Animator的方式做的。 Edi原创 2018-01-26 17:46:50 · 21939 阅读 · 0 评论 -
Unity粒子特效的缩放与加(减)速
被人问到了这样一个问题:粒子特效如何加速?如何对它进行缩放?项目中没有遇到这样的需求,记得以前有这插件可以直接粒子进行缩放的,但是仅限于编辑器,现在要求运行时处理,那我们来看下粒子吧。 从编辑器中可以看到,粒子提供了一个缩放模式的属性,这个属性有三个枚举,shape,local,hierarchy,默认选项是shape,就是按网格来缩放,local是自身的缩放,只有更改自身的scale属性时可以进原创 2017-10-27 23:04:46 · 14528 阅读 · 0 评论 -
Unity控制台日志开启重定向
在Unity中,一般都会自己手动封装一次日志,或者自定义一些日志输出,比如lua代码的日志输出,双击开启时我们希望重新定向的其他的文件,而不是封装代码里,这里要用到的主要是[OnOpenAssetAttribute(0)],每次文件开启时,先执行自定义的代码,代码里自己重定向文件和行数,然后再选择开启。对于Unity控制台,我们还要用反射取得对应的日志内容。 直接上代码,使用时直接修改logCSN原创 2017-05-19 19:33:48 · 5254 阅读 · 0 评论 -
监听脚本绑定事件与属性改变事件
本文转载自Unity3D研究院编辑器之监听脚本绑定事件与属性改变事件(十一),感谢原作者提供好文章在编辑模式下可能会用到, 比如我想做当绑定一个脚本后做点什么事情。。。 再比如我想当脚本序列化的数据发生改变做点什么事情等等。。举个典型的例子 比如有些脚本需要美术 或者策划挂在场景的模型上, 那么这些模型有很多没用的的组件 比较Animation 或者 Collider 如果在这里监听的话, 当他们挂转载 2017-03-15 10:02:36 · 1590 阅读 · 0 评论 -
Unity资源清理工具
Unity Global Support部门制作了一些实用的小工具免费供大家使用,前面已经分享过了处理资源的AssetGraph,今天继续为大家推荐用于批量清理资源的小工具:Asset Cleaner。 Unity Global Support部门主要负责对使用Unity引擎的企业级VIP客户提供技术支持,大中华区已实现全面覆盖,目前包括腾讯,网易,巨人,完美世界等公司已属于Unity的企业级VI转载 2016-12-12 20:52:18 · 2655 阅读 · 3 评论 -
unity3d网络延时检测
王者荣耀里右上角有个网络延时的功能,可以看到当前网络状况。觉得有点意思,网上搜索了一下,找到了这篇文章,转载过来记录一下。 原文章来自Ping,感谢原作者提供好文章using UnityEngine;using System.Collections;public class Test_Ping : MonoBehaviour{ public string IP = "123.125.11转载 2016-10-20 20:49:06 · 9240 阅读 · 2 评论 -
自动生成代码编译完成后自动执行
项目上有个需求,需要读取某些文件然后自动生成代码,生成的代码编译完成后自动执行对应的代码,Unity有提供一个对应的方案[InitializeOnLoadMethod],比较简单,直接上代码吧[MenuItem("Test/ComplierTest")] static void TTTT() { EditorPrefs.SetBool("ComplierRun", t原创 2016-10-19 20:15:43 · 2340 阅读 · 0 评论 -
mac下配置NDK开发环境
一、启动终端Terminal 二、输入 pico .bash_profile 回车。 三、输入以下内容【路径依实情而定】,注意路径最好不要有空格:export ANDROID_SDK_ROOT=/Users/apple/Desktop/adt-bundle/sdk export ANDROID_NDK_ROOT=/Users/apple/Documents/Android/android-n转载 2016-11-08 19:54:09 · 718 阅读 · 0 评论 -
Unity Mono脚本 加密
文章转载自 Unity Mono脚本 加密,感谢原作者提供好文章 个人是用虚拟机mac系统编译的mono,按照雨松大神的教程即可,转载这篇文章主要是讲解全面,可以解除很多困惑。加密环境 引擎版本:Unity3d 5.3.4 及更高版本 (使用Mono而并非IL2CPP) 操作系统:CentOS 6.2(Final) 加密环境:Android、iOS(暂定) 加密对象:C#源代码(dll文件转载 2016-11-08 19:48:21 · 1643 阅读 · 0 评论 -
快速查找Unity死循环
我们先建立一个新工程,新建C#文件,然后在Start函数中加入以下代码:void Start () { while (true) { int i = 1; }}把这个C#文件挂到场景摄像机或其它GameObject上。打开这个工程对应的VS工程(如何用VS编辑unity3d的代码省略),选择“调试/Attach Unity Debuger”菜单来调试uni转载 2016-06-24 18:52:59 · 4175 阅读 · 0 评论 -
unity3D使用dll打包
unity中有些时候有些代码是一整套的,如果能把他们归类起来作为一个文件整个代码结构看起来就会整洁清爽很多。c#提供了dll打包,但是unity中由于涉及到unity的自身dll,如UnityEngine.dll,我们一般写的很多代码都会涉及到对这个dll的引用,在unity中建代码文件都会默认添加对此dll命名空间的使用,using UnityEngine; 因此在涉及到使用此dll在打包dll原创 2015-09-06 19:07:36 · 6109 阅读 · 1 评论 -
天天飞车国际化方案
1、概述 天天飞车基于Unity3D引擎开发,UI插件使用的是NGUI,所以此方案适用范围为Unity3D+NGUI开发的项目,其他项目国际化也可以作为参考。 2、编码方案 由于是unity项目,统一采用c#的string类对字符串进行处理,string就是Unicode编码。外部文本统一采用UTF-8编码存储。 3、文字 3.1 硬编码文字国际化方案 对于项目中有硬编码字符的地方,进转载 2015-07-22 20:31:45 · 712 阅读 · 0 评论 -
记一次基于Unity的Profiler性能分析
1. CPU Usage A. WaitForTargetFPS: Vsync(垂直同步)功能所,即显示当前帧的CPU等待时间 B. Overhead: Profiler总体时间-所有单项的记录时间总和。用于记录尚不明确的时间消耗,以帮助进一步完善Profiler的统计。 C. Physics.Simulate: 当前帧物理模拟的CPU占用时间。 D. Came转载 2015-07-30 20:16:15 · 514 阅读 · 0 评论 -
反编译unity3d发布apk
郑重声明:本教程仅用于学习使用,从事任何商业用途非法行为与作者无关,请知晓!本文目的:通过教会大家如何破解别人游戏的同时,也希望各位开发者能加强自身游戏的防破解能力!1:到gitHub下载DisUnity v0.3.3软件,下载地址: https://github.com/ata4/disunity/releases 简单教程:https://github.com/ata4转载 2014-10-18 18:56:00 · 4234 阅读 · 0 评论 -
【unity 代码升华篇】委托、事件全解析(二)
废话就不多说了,直接进入今天的主题-事件在我们所接触到的事件一般分两种:一种是自定义的,自定义的事件需要自己对其进行赋值。一种是控件提供方定义的,如:ngui,控件事件只需要查找控件定义的事件列表,选择所需要的进行操作即可。当然,我们的话题是上面第一种啦。 实例模拟场景为:游戏战斗中,猪脚在指定的一片区域中,存在4只怪物,他的目的就是一只一只找到并消灭该区域的怪物。 简转载 2014-10-16 13:56:05 · 793 阅读 · 0 评论 -
【unity 代码升华篇】委托进阶、回调函数(三)
下面开始委托进阶部分的分享在此我分3个部分来说明表述1.带返回值的委托2.泛型委托3.委托的异步处理下面正式进入我们的主题委托进阶一、带有返回值的委托问:委托需要承载哪些信息呢?通过前面与大家分享的委托帖子中,不难答出,它存储了方法名,还有参数列表(方法签名).如://============================public delega转载 2014-10-16 13:58:54 · 1384 阅读 · 0 评论 -
unity使用StartCoroutine是提示NullReferenceException的解决方法
今天使用StartCoroutine时报错,vs里面正常,unity能正常编译及运行,但是执行到调用这句话de原创 2014-10-16 14:00:59 · 5696 阅读 · 1 评论 -
【unity 代码升华篇】委托、事件全解析(一)
1.前言最近因为工作事情以及个人原因,搞得心情烦闷,哎...“程序是寂寞的,只有程序员能懂“她”,可惜能懂程序员的人确很少很少”呵呵...请容许我在此小小的牢骚下.帖子也是许久未曾更新了,首先,在此感谢大家一直对我的关注,看过我前面帖子人大概比较清楚,我个人比较侧重代码优化、代码管理等.所以,酝酿许久,在此还是送上一套与代码有关的东西吧!毕竟作为程序的我们也只有”她“对你不转载 2014-10-16 13:52:30 · 1221 阅读 · 0 评论 -
unity3d 嵌入 移动MM SDK 闪退的问题
昨天一同事嵌移动SDK时,出现闪退进步了游戏原创 2014-10-31 09:19:46 · 1219 阅读 · 0 评论 -
利用winrar的自解压功能单文件发布Unity的PC版本包
Unity打包出来的PC版有一个exe文件,还有一个_Data文件夹,我们可以利用winrar的自解压的高级设置功能打包成一个单文件,然后给这个文件配置一个好看的图标。最终效果就是我们可以获得一个貌似安装程序的单个文件。首先安装一个winrar文件,360压缩神马的目测是没有自解压的高级功能的。第一步:第二步:转载 2014-11-14 15:17:34 · 1100 阅读 · 0 评论 -
unity 断点下载
using UnityEngine;using System.Collections;using System;using System.Net;using System.IO;public class Load : MonoBehaviour { AsyncOperation l; void Start () { // Application.back转载 2014-10-24 16:25:37 · 671 阅读 · 0 评论 -
正则表达式30分钟入门教程
目录跳过目录本文目标如何使用本教程正则表达式到底是什么东西?入门测试正则表达式元字符字符转义重复字符类分枝条件反义分组后向引用零宽断言负向零宽断言注释贪婪与懒惰处理选项平衡组/递归匹配还有些什么东西没提到联系作者网上的资源及本文参考文献更新纪录本文目标30分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它。如何使用本教转载 2014-11-10 14:47:18 · 658 阅读 · 0 评论 -
unity3d各种OpenFileDialog操作
1 编辑模式(Editor)下:string path = EditorUtility.OpenFilePanel("Load png Textures of Directory", "", "");WWW ww=new WWW("file:///"+path);print(ww.url);yield return ww;gui.texture=ww.texture;2转载 2014-10-18 19:02:49 · 1276 阅读 · 0 评论 -
unity3d调用android webView
1、配置dialog xml文件:转载 2014-10-18 19:16:18 · 1188 阅读 · 0 评论 -
unity3d之http多线程异步资源下载
本文诞生于乐元素面试过程,被面试官问到AssetBundle多线程异步下载时,愣了半天,同样也被深深的鄙视一回(做了3年多u3d 这个都没用过),所以发誓要实现出来填补一下自己的空白,同时分享给大家。说明:本人只在pc和Android下测试好使,其他平台未知!直接贴代码,都是C# http的API,不懂得自己百科。using UnityEngine;using Sys转载 2014-10-18 19:14:17 · 1339 阅读 · 0 评论 -
游戏脚本事件分发
游戏中经常会要求对象之间的交互,在交互的时候如果是同模块的还好,可以取引用,如果不是,就容易出现各种耦合,不利于项目的开发。软件开发一般都强调“高内聚,低耦合”,既然如此,上面的问题就应该引起重视,相应的解决方案一般来说都是事件分发。事件分发的原理一般是使用委托或Action(其实也是委托),用户预先注册指定的事件,我们将这个事件存起来,在用户要求执行指定事件的时候,将对应的事件列表依次执行一遍,有原创 2015-08-26 19:59:45 · 1274 阅读 · 0 评论