Unity
LoveMollyWendy
这个作者很懒,什么都没留下…
展开
-
模型分解(瓦解、溶解...)Shader
五一放假有事,没有更新blog了,放假回来继续更新,今天带了模型分解、瓦解、溶解的Shader,直接上代码洛,如下:Shader "Custom/Disintegrate"{ Properties { _MainTex ("Texture(RGB)", 2D) = "white" {} //主纹理 _Bumpmap("Bump Texture(R原创 2017-05-03 11:40:30 · 2488 阅读 · 0 评论 -
tolua在unity版本升级到5.4之后报错修复
unity版本从5.3升级到5.4之后问题不是很大,只需要修改写命名空间即可。升级到5.5版本之后就需要修改些:1.ToLuaExport类中 public static List memberFilter = new List 中增加 "MonoBehaviour.runInEditMode", "Light.lightmappingMode", "Light.lightma原创 2017-05-18 15:08:34 · 3316 阅读 · 1 评论 -
Shader代码重复利用
有时候一段代码,我们可能在不同的地方调用,如果每个地方复制一份,一方面不美观,代码冗余,另一方面,如果这段代码出问题了就gg了,你得找到所有使用的地方,改吧。Shader中的代码也可以模块化的,主要使用define指令。例子如下:创建.cginc文件创建一个myinclude.cginc文件,在该文件中写入如下代码:#ifndef MY_CG_INCLUDE#define MY_CG_INCLUD原创 2017-04-27 16:47:20 · 1571 阅读 · 0 评论 -
UGUI Tab键切换InputField
需求游戏登录界面输入框之间的跳转用tab去实现代码 using UnityEngine; using System.Collections; using UnityEngine.EventSystems; using UnityEngine.UI; /// <summary> /// UGUI Tab键切换InputField /// </sum原创 2017-05-22 16:37:41 · 3627 阅读 · 0 评论 -
Unity Ads接入
Unity 自带广告接入方式:1.打开unity services 页面 (Window→Services)2.打开Ads开关3.选则Enable test mode 选项4.看下Advanced选项,注意gameid后面脚本要用到5.写脚本挂在任意一个物体上(相机或者空物体都行) using System.Collections; using System.Collections.原创 2017-06-21 10:48:59 · 4714 阅读 · 3 评论 -
unity中的单元测试
前端时间研究了软件的开发方法,于是打算引进TDD(测试驱动开发)。TDD的优缺点就不细说了,网上一搜一大把。unity中常用的测试工具1.NUnitunity5.3以后已经在Editor中集成了测试模块,该测试模块依托于http://nunit.org/2.Unity Test ToolUnity官方还推出了一款测试插件Unity Test Tool(基于NSubstitute),除了单元测试之外还原创 2017-07-13 14:30:58 · 3378 阅读 · 0 评论 -
Unity Android平台接入支付宝
额,最近折腾在unity项目中接入支付宝,记录下流程。 先来个官方文档:https://docs.open.alipay.com/204/106079/配置创建应用,配置应用参考上面的给的官网文档。支付宝SDK链接 https://doc.open.alipay.com/doc2/detail.htm?treeId=54&articleId=104509&docType=1下载SDK&Demo。解原创 2017-07-21 11:33:03 · 3709 阅读 · 3 评论 -
unity WebGL项目如何本地运行
unity打包出来的webgl项目是一个文件夹,打个比方叫test文件夹,然后怎么运行这个test文件夹中的项目呢?有没有懵逼,没反应过来,其实了解web的发布就轻松解决这问题了。两种方法,IIS服务器通过IIS发布一个web,这个网上一找一大把的教程,就不多说了。不会的留言。。。Apache服务器用了这个才发现这个搭建一个本地测试web是如此简单,新手不推荐一点点去安装环境,有个简单暴力的方式就是原创 2017-04-26 16:44:19 · 11730 阅读 · 14 评论 -
Unity 如何发布到Mac App Store
最近蛋疼的需要发布unity游戏到Mac App Store,网上的教程不太多,第一搞有点蛋疼,各种证书搞糊涂了,就这机会恶补下apple的相关证书。其实官网给了教程, http://docs.unity3d.com/Manual/HOWTO-PortToAppleMacStore.html官网上大概描述了整个事情的流程,但是各种细节还待完善。下面就整个过程整理如下:申请证书需要到 https://原创 2017-08-10 11:35:28 · 2641 阅读 · 3 评论 -
unity 加密、防止反编译、mono编译
最近再弄unity的打包安全的问题,下面就记录下自己搞定整个过程踩过来的坑吧,一方面留个记录,另一方面给新手一个指引。为什么要加密呢这个问题怎么说呢?打个比方吧,就好比人为什么要穿漂亮衣服打扮下自己一样,无非是不让别人看到不改看的地方。。。此处省略一万字。。。那些东西要加密呢其实我看大牛们的博客,直接了当,直接讨论加密方法,原理,新手一开始就搞的云里雾里,这里主要照顾到新手,老鸟直接自行略过即可。u原创 2017-06-21 14:26:13 · 11133 阅读 · 3 评论 -
VSCode 调试tolua(xlua、slua、ulua通用)
Unity+lua开发调试起来还是比较蛋疼,介绍几个简单的调试方法LuaStudioLuastudio调试lua还是挺方便的,直接注入到Unity进程即可方便的调试,需要注意的是lua代码如果是AssetBundle形式存在的话,会出现乱码,解决方法就是调试的时候不启用AssetBundle。 其他的就很简单了,这个luastudio做的真心不错,但是收费洛。VSCode+luaIde轻量级的VS原创 2017-10-09 17:35:25 · 20916 阅读 · 3 评论 -
Unity游戏状态脚本控制思考
最近忙,好久没法博客的,见谅。 突发奇想,Unity的各个脚本是怎么有条不紊运作的,于是自己简单的用C#控制台程序模拟下,只是理下思路,具体的流程自己去体会,轻喷,不啰嗦,直接上代码。首先是游戏脚本接口,如下: interface IGame { void Awake(); void Start();原创 2017-11-07 10:17:07 · 698 阅读 · 0 评论 -
Unity游戏状态脚本控制思考(二)
最近忙着项目上线,一摊子事,好久没更了,于是乎补上一更。 上一篇聊到Unity的脚本控制,这一篇就细说下Unity的实现原理. 核心点C#脚本+Mono+C++ UnityEngine里的核心类似这么写的:public class Component { private IntPtr native_handle=IntPtr.Zero; [Method原创 2017-12-20 20:46:40 · 901 阅读 · 0 评论 -
Unity游戏启动时都干了些啥
前面几个月公司,项目进行大版本更新,事比较多,就耽搁了,最近闲下来了就开始整理下,之前写的东西。Unity游戏在启动的时候会加载一些默认的资源,这些资源包括Texture、Shader、Mesh等等。下面分为两部分细说:那些资源会打包进游戏包既然要测试,就得有工程是吧。好,我们用Unity创建一个空工程,工程中就一个场景如图:这个场景中的所有对象都删除(包括MainCamera...原创 2018-04-27 11:29:24 · 4414 阅读 · 0 评论 -
Mesh info
Mesh一些基本内容,用于备忘,请忽略。属性Mesh的属性如下表描述:属性 说明vertices 网格的顶点数组normals 网格的法线数组tangents 网格的切线数组uv 网格的基础纹理坐标uv2 如果存在,这是为网格设定的第二纹理坐标bounds...原创 2018-04-27 11:34:44 · 728 阅读 · 0 评论 -
unity导出工程与iOS工程合并
由于工作的原因,需要把Unity生成的xcode工程和另外一个xcode工程融合,形成一个全新的app,好蛋疼啊,这是折腾人,哎没办法,于是网上找了找教程,搜集整理如下,以备不时之需。亲自实践过,能够合并成功,推荐该文档备胎1备胎2融合两个xcode工程的过程是痛苦的,期间会遇到各种莫名其妙的问题,耐心一点点去修改,相信总会成功的,祝君好运。欢迎留言交流。。。原创 2017-04-27 13:58:13 · 2200 阅读 · 0 评论 -
Unity3D动态读取外部MP3文件给AudioSource
转载连接在PC端VR游戏开发中,需要动态加载本地的MP3文件,但是Unity3D不知道出于什么原因,到5.4.0也不支持MP3文件的外部加载(目前只支持wav和ogg)。因此要想通过www来加载mp3文件就只能采用曲线救国的方式,将MP3文件读取后转为wav或者ogg,然后再给AudioSource来播放由于只是在PC端进行开发,故这里采用NAudio.dll这个类库。使用NAudio需要将项目Un转载 2017-04-27 13:48:21 · 8637 阅读 · 0 评论 -
幽灵着色器
如果人物模型变成鬼片中的幽灵是不是很酷,想想就很激动,下面代码具体的讲解,先上一张图 对,就类似于这种效果的,代码如下:Shader "Custom/MyGhostShader" { Properties { _MainTex ("Main Tex", 2D) = "white" {} //主纹理 _BumpMap("Bump Map",2D)= "b原创 2017-05-03 13:56:19 · 1074 阅读 · 0 评论 -
Using Vector3.Lerp() correctly in Unity
正确的使用插值函数 详细的介绍了易出问题的地方,以及lerp的基本原理。原创 2017-05-03 15:22:48 · 960 阅读 · 0 评论 -
Hologram Shader
全息图Shader效果图如下: 全息图是啥,自己百度下吧,(单一光照射。 传统的照片呈现的是真实的物理图像,而全息图则包含了被记录物体的尺寸、形状、亮度和对比度等信息。这些信息储存在一个很微小但却很复杂的干涉模式中。这个干涉模式是由激光产生的)Shader代码如下:Shader "Custom/MyHologram" { Properties {原创 2017-05-03 17:37:28 · 2634 阅读 · 0 评论 -
模型各部位自定义颜色Shader
模型的各个部位可以更加需要更换不同的颜色。 大体思路:一张遮罩图,这张图中的rgb颜色各代表不同的部位。然后 把遮罩颜色和主纹理颜色混合。具体Shader代码如下:Shader "Custom/MyCustomColors" { Properties { _MainTex ("Texture", 2D) = "white" {} //主纹理 _原创 2017-05-03 18:10:15 · 2554 阅读 · 5 评论 -
拖拽物体脚本
需求鼠标按下选择某个物体,拖拽,松开后停止拖拽实现代码 using System.Collections; using UnityEngine; public class DragObject : MonoBehaviour { //目标物体的屏幕空间坐标 private Vector3 _vec3TargetScreenSpace;原创 2017-05-23 15:27:31 · 961 阅读 · 0 评论 -
ugui屏幕坐标和世界坐标关系详解
本文主要分析ugui的屏幕坐标和世界坐标的关系,至于ugui的属性参考其他的文章学习下。本文以一个RawImage为例,目录结构如图:RawImage的属性如图:这里为了方便观察把pivot设置为左上点(0,1)注意: //获取UI坐标系的2D坐标,就是X,Y值 GetComponent<RectTransform>().anchoredPosition; //获取UI坐标系的3D坐标, Ge原创 2017-05-24 13:43:23 · 7884 阅读 · 0 评论 -
Unity读取内部、外部资源详解
Unity读取内部、外部资源详解unity读取资源大概分为两部分:一部分为内部资源,什么是内部资源,就是导入unity中的资源,我们称之为Asset,这部分资源unity有现成的管理方法。另外一部分是外部资源,没有导入unity,也不是打包的AssetBundle资源,比方说就是一个txt、png、lua等资源,需要自己去实现读取以及资源的管理。原创 2017-04-26 11:06:00 · 5454 阅读 · 0 评论 -
Unity 各端调试方法记录
unity在本地editor调试很方便,但是在android和ios 上调试那叫一个蛋疼啊。。。android的adb,xcode的控制台虽然能够调试但是效率还是不高啊,打个包机器慢的话得半个小时,再调试。。。。。。当然还可以本地保存日志,然后查看本地日志,难道找日志文件不浪费时间?为了方便就用gui写了一个控制台,就轻松解决各端调试问题,发布时通过开关或者宏定义关掉,节省资源。代码段如下: pri原创 2017-04-26 11:54:29 · 2955 阅读 · 0 评论 -
Unity 地形高度图生成方法
Unity中地形(Terrain)高度图生成方法大概可以归纳为3类:手动绘制直接通过unity的terrain提供的工具手动绘制地形,让后导出成raw格式的高度图,这个没啥可说的,不会的话留言。。。PS等工具生成已经有现成的教程了就不详细描述了。老规则传送门如下: ps生成高度图 当然你还可以用其他生成工具,生成raw格式的高度就行。通过noise调整高度图通过noise填充高度图,能够动图的生原创 2017-04-26 15:39:07 · 16877 阅读 · 4 评论 -
MoonSharp调研使用
最近游戏框架需要支持webgl,tolua不支持webgl,一开始的想法是把自己把tolua修改支持webgl,想法是好的,但是现实是赤果果的打脸啊,要搞定的地方还是太多,工作量也是挺大的,于是MoonSharp方案进入考虑范围(MoonSharp)。MoonSharp是C#实现的lua解释器,部分借鉴NLua,网上说的性能堪忧,我试了下,效果满足基本需求,可能数据量不大。重要的是支持webgl,支原创 2017-04-26 15:55:15 · 2951 阅读 · 1 评论 -
Unity导入Texture自动设置参数
工作中外部有大量的文件需要导入unity中,这些文件中的Texture占了好大一部分,不能手动设置啊,那叫一个痛苦,于是偷懒的想法诞生了,直接上脚本:public class AutoSetTexture : AssetPostprocessor{ void OnPreprocessTexture() { //自动设置类型; TextureImpor原创 2017-04-26 16:20:36 · 5068 阅读 · 0 评论 -
Unity Project面板右键菜单创建lua文件
unity Project面板右键Create按键不能创建lua文件,每次都得在外面创建一个txt,然后改扩展名变成lua文件,好蛋疼,有木有,于是就度娘,发现真有偷懒方法。using UnityEngine;using System.Collections;using UnityEditor.ProjectWindowCallback;using System.IO;using Unity原创 2017-04-26 16:31:10 · 6003 阅读 · 0 评论 -
CG类型
CG类型CG支持7种数据类型:float 32位浮点数half 16位浮点数int 32位整形数fixed 12位定点数bool 布尔数据sampler 纹理对象的句柄 共有:sampler、sampler1D、sampler2D、sampler3D、samplerCUBE、和samplerRECT六种。string 字符串,其实没有必要在CG中用到字符串此外,CG还支持矩阵数据原创 2017-04-26 18:39:23 · 1615 阅读 · 0 评论 -
Unity自动化打包脚本
Unity的项目手动打包确实很痛苦,得慢慢等着,好无聊,能自动化脚本打包什么的最好了,闲话不多说直接上脚本。` windows的bat脚本 echo off set companyName="公司名字" set productName="游戏名字" set platform=0 //这个是平台编号 set outPath="打包输出路径 例如原创 2017-04-27 10:29:32 · 9709 阅读 · 1 评论 -
用Standard核心自定义PBR Shader
上个MMO项目结束有段时间了 ,最近开始新的沙盒项目了,把自己这段时间遇到的问题都整理整理,分享出来。本文主要讲解如何用Unity Standard核心来快速的实现自定义PBR Shader,给大家一些简单的参考意见。话不多说,直接上代码:Shader "Custom/SimplePBRTest"{ Properties { _AlbedoMap("AlbedoMap"...原创 2019-09-23 20:18:50 · 1103 阅读 · 0 评论