Unity
文章平均质量分 74
Gary的面包屑小道
这个作者很懒,什么都没留下…
展开
-
【Unity和Android相互调用】AndroidJavaProxy的使用(以C#为主导)
重点声明:本片还是可以归纳为以C#为主导的方式进行和Unity的通信,之前的一篇博客介绍了以C#为主导的和Android进行通信的方式,这一篇算是一个补充。其中使用了C#提供的AndroidJavaRunnable来代替Android中的Runnable。其实我们在Java开发的过程中,还有一种经常使用的方法是继承AndroidSDK中提供的接口,然后自己重新重载里面的函数来实现自己的逻辑,遇到这种情况的时候,我们应该怎么办呢?这个时候Unity中还为我们提供了一个另外一种方法:AndroidJa原创 2021-02-24 16:31:26 · 1615 阅读 · 4 评论 -
【Unity和Android相互调用】以C#为主导的调用方式
之前的两篇博客介绍了导出Jar以及Aar包供Unity调用的方式。今天主要记录一下只是用C#来调用Android中接口的方式。只用C#的方式指的是真的只用C#,不需要导出什么这个包,那个包乱七八糟的东西,只写C#的代码,所以我把这种方式叫做以C#主导的方式。首先先告诉大家这种方式的优点和缺点,大家看了之后再根据自己的实际情况进行选择。优点:只写C#代码,不需要导出哪些乱七八糟的东西,十分的简单。缺点:只能调用AndroidSDK中的类以及里面的方法,不能调用自定义的方法。原理:因为我们在原创 2021-02-24 10:51:39 · 1161 阅读 · 0 评论 -
【Unity和Android相互调用】导出Aar包(简化版)
之前的一篇博客写了导出Jar包的方法来提供Unity和Android之间的通信,但是其实这种方法官方已经不再推荐了,作为时代的弄潮儿,我们应该与时俱进。本文介绍的的方法是通过AndroidStudio导出Aar包,但是我查了一些博主的文章,好多都是导出Aar包还要使用AndroidManifest.xml,在这之前还要把Unity的jar包导入到Android中去,然后修改生成的包名,自己弄了一遍,可能是包名的原因,一直找不到包里面对应的函数。感觉这种方法也比较麻烦。偶然间发现了一篇博主的文章,通过原创 2021-02-19 22:26:13 · 939 阅读 · 0 评论 -
【Unity和Android相互调用】导出Jar包_Unity调用Android的MainActivity类的函数
Unity中调用Android的类成员函数方法我们在Android的MainActivity类中声明一个“add”函数,这个函数这个函数有两个参数a,b,都是int类型的。然后返回两个函数的和。本篇文章的重点,在于调用的过程,所以将调用的函数简单化。如果该函数调用成功,则参数类型和返回值就可以改为其他基本类型的数据。我使用的AndroidStudio版本:AndroidStudio4.1.1,Unity版本是:2019.4.4f1Android部分:1、建立空的Android工程,选择原创 2021-01-25 23:29:23 · 590 阅读 · 1 评论 -
Unity_UGUI实现圆形按钮的底层实现
在使用Unity的UGUI过程中,我们通常会遇到一种需求就是会,创建一个圆形的按钮或者图标。先说说正常实现这么一个圆形组件的步骤:1、创建Image组件Img1,作为父组件2、在父组件下面创建子Image组件Img2,3、在Img1中添加Mask(Script)组件,然后给父组件赋一个图片这个图片的周围是透明的,中间是圆形的纯色填充,用来做父组件的image4、然后我们给子组件img2赋上我们需要显示的图片最终父组件中Mask组件会帮我们做遮挡,然后将子组件img2显示成圆形:原创 2020-11-02 23:03:01 · 2990 阅读 · 0 评论 -
Unity小游戏——移动的小船船(摇杆控制方向)
关键功能:1、摄影机跟随船体移动2、船体在水面上晃动3、摇杆控制方向摇杆控制方向的话,这里我是简单的使用了一个Unity的插件:EasyTouch,EasyTouch里面的有一个EasyJoyStick(摇杆控制)当你导入到你的Unity工程的时候,你的窗口选项就会多一个:然后我们就可以按照这个步骤来创建一个EasyJoyStick的对象:创建完成之后,我们就可...原创 2019-11-27 21:57:09 · 2497 阅读 · 0 评论 -
Unity特殊文件夹以及资源管理
1:Editor文件夹 (不会打包)Editor文件夹可以在根目录下,也可以在子目录里,夹就可以;Editor下面放的所有资源文件或者脚本文件都不会被打进发布包中,并且脚本也只能在编辑时使用;一些工具类的脚本放在这里,或者是一些编辑时用的DLL, 类似技能编辑器,那么编辑器的代码放在这里;2: Editor Default Resources (不会打包)Editor ...原创 2019-11-27 21:53:00 · 1015 阅读 · 0 评论 -
Unity—JSON处理
1: JSON (JavaScript Object Notation)随着JavaScript的流行与互联网应用,JavaScript里面最强大的数据类型Object,使用起来极其的方便,为了能更好的做数据交换,设计了JSON协议,能够将JavaScript里面的Object,变成可以阅读的文本数据及JSON数据格式。实现JavaScript里面的Object与JSON的转换,Ob...原创 2019-11-25 21:38:54 · 444 阅读 · 0 评论 -
Unity—角色描边以及Shader的切换
在游戏里面我们经常看到有一些人物,在被攻击的状态或者鼠标挪过去的时候,人物或者模型就要有一个边边,但是不在攻击状态或者鼠标不在区域的时候,就是正常显示,像这样:这个效果是是怎么实现的呢?首先我们需要一个模型,:People,以及一个材质,一个材质贴图,还有就是两个shader,一个shader是正常的,一个shader是带描边的,这些shader其实网上有很多,我们直接用就可以,这里我...原创 2019-11-25 21:36:35 · 1397 阅读 · 2 评论 -
Unity高级功能—AssetsBundle的打包与下载
假设我们现在有一个立方体的预制体需要打包进来怎么操作?创建一个立方体,然后将它托进res文件夹,制作一个立方体预制体(prefab) 右下角的小窗口里面,我们可以设置这个prefab为一个AssetBundle,点击New,就可以给他设置自己的名字,我给这个prefab归属到“cub_bundle”类里面3、编写脚本,进行打包我们创建一个Editor的文件夹,然后在里面创建...原创 2019-11-22 21:11:49 · 889 阅读 · 0 评论 -
Unity高级功能—网格导航寻路
应用场景:类似于LOL中,鼠标点击地图上的某一点,然后人物就会自动的走过去。准备场景:一个Plane,作为地面;一个Cube,作为障碍物;一个胶囊体,作为人物。打开导航选项卡:Mac:Window——AI——NavigationWindows:Window——Navigation选择Plane,然后打开Navigation选项卡,Navigation Area里面的...原创 2019-11-22 21:05:58 · 2749 阅读 · 0 评论 -
Unity高级功能—拖尾渲染器
用途:用于实现一些类似于刹车的痕迹的效果做法:我们准备一个Plane,将这个平面在Z轴放大100倍,模拟一个跑道;然后准备一个Cube,模拟一个赛车,像这样:绿色和红色是我为了区分出来,而做的简单的材质。此时我们创建一个空的游戏对象,然后将这个游戏对象作为Cube的子节点,备注:tail:在这个节点上面添加“拖尾渲染器(Trail Renderer)”接下来我们就要制作...原创 2019-11-21 21:46:58 · 1256 阅读 · 0 评论 -
Unity高级功能—获取其他对象的mesh,来显示创建的空对象
当我们创建了一个空的游戏对象:Gameobject,以及一个立方体Cube,此时Gameobject没有任何的属性,所以我们给其添加Mesh Filter属性以及Mesh Renderer属性,Mesh Filter属性用来管理当前物体的mesh文件,mesh文件存放了物体的顶点信息,Mesh Renderer组件用来渲染当前物体。我们可以给这个空的游戏对象挂载一个脚本,然后获取Cube的me...原创 2019-11-21 21:43:11 · 1789 阅读 · 0 评论 -
Unity高级功能—预先全局光照GI
因为我们的Realtime每帧都会计算光照,但是实时光照是不会反射的,所以它的光影显得单调;Baked GI:通过烘培光照贴图的方式获得很好的光照效果,无法实时的改变光照;当我们在地面上放置的立方体是红色的时候,地面上反射的应该也是淡淡的红色,这个效果就是得是用我们的预先全局光照。之前在网上查资料,好多的资料都是说在Lighting选项卡有一个Precumputed Realtime ...原创 2019-11-21 21:41:34 · 318 阅读 · 0 评论 -
Unity高级功能—光探头
首先我们先说一下我们在什么时候会使用这个光探头当我们在一些静态场景中,将光照烘焙出来的时候,此时物体的阴影效果都是光照烘焙出来的结果,但是如果此时我们有一个动态的物体进入了这个已经经过烘焙的场景之后,那么这个动态的物体身上是不能反射出当前场景的光照的,就像这样一样:Tip:当前场景中有一个红色的点光源,以及左边的墙和一个地面,烘焙之后,加入一个立方体,此时立方体是没有收到这个光源的作用的,...原创 2019-11-21 21:39:56 · 704 阅读 · 0 评论 -
Unity高级功能—法线贴图的制作以及在代码里面进行材质上贴图的切换
制作法线贴图还是得美术提供你几张基础的法线贴图之后,然后再去制作。现在我们手里有两张贴图,一张是正常贴图,一张是法线贴图;1、选择美术提供的基础的法线贴图:Tip:其中Filtering选项有的地方说是应该选择Sharp,但是我的默认就是Sharp。2、选项设置完成之后,点击右下角的“Apply”就会看见贴图变成这样:此时我们的法线法线贴图就做好了。代码里面怎...原创 2019-11-21 21:36:03 · 1359 阅读 · 0 评论 -
Unity高级功能—自发光材质的制作
将场景中的所有光照都关闭之后:场景中有一个Plane,两个被拉变形的Cube,看似像是三个面组成的角落,然后中间是一个正方体Cuble。需要关闭的光照有哪些:场景自带的一个光照Directional Light 天空盒的光照(windows - Lighting - Lighting setting),然后将天空盒的选项置为空关闭所有光照之后,创建一个材质。...原创 2019-11-19 22:47:14 · 2997 阅读 · 0 评论 -
Unity高级功能—本地储存
本地储存的应用场景就是当你的游戏玩耍到一半的时候,退出了,下次进入的时候,还需要之前的状态信息,这个时候就需要用到本地储存。Unity里面有一个专门的类,来处理这个本地储蓄:PlayerPrefs类这个类处理的相当于一个键值对:<String name, Value>主要的处理方法:(1) SetInt/SetFloat, SetString: key--&...原创 2019-11-19 22:43:23 · 687 阅读 · 0 评论 -
Unity高级功能—3D拾取
3D拾取的原理请看本人博客的:DX9中的3D拾取,此文章只记录Unity中的3D拾取 。1、创建一个Cube,当我们使用鼠标点击二维屏幕的时候,相当于从发出一条射线,然后将这条射线和三维世界中的物体进行判断相交,第一个相交的物体就是点击到的物体。2、给Cube添加脚本:usingSystem.Collections;usingSystem.Collections.Gener...原创 2019-11-19 22:41:31 · 709 阅读 · 0 评论 -
Unity高级功能—制作自己的天空盒并添加到场景
首先需要美术提供的6张图,这6个图就是前后左右和上下,包围成一个盒子,我们就相当于处在这个盒子的中间,然后无论你从哪个方向看过去,都是属于同一片景色,这就是天空盒。A 首先演示给场景一个天空盒,给场景添加天空盒之后,无论怎么移动摄影机,天空盒是不变的我这里有六张图,分别代表天空盒的前后左右上下第一步:创建材质天空盒的本质其实也是一个材质,创建一个叫做myskybox的材...原创 2019-11-19 22:39:35 · 1633 阅读 · 0 评论 -
UnityShader—通过multi_compile多版本编译
通过:#pragma multi_compile标志1 标志2来进行标志位的设定Tip:后面不能带分号然后通过#ifdef标志1 #endif进行编译脚本里面可以通过Shader.EnableKeyword以及Shader.DisableKeyword接口对标志位进行开启或关闭实现过程:1、创建以下shader,设置两个标志位:Blue和GreenBlue标志位...原创 2019-11-19 22:33:57 · 331 阅读 · 0 评论 -
UnityShader—抓屏通道(GrabPass)
抓屏就是截屏,将截屏的内容制作成一张贴图,然后就可以使用贴图进行显示,操作如下:创建一个红色的cube,一个plane,作为场景,创建一个plane,然后绕x轴旋转90度,作为显示截屏的屏幕创建一个Unlit shader:Shader"Custom/GrassShader"{Properties{_MainTex...原创 2019-11-19 22:31:45 · 611 阅读 · 0 评论 -
UnityShader—混合模式
混合模式效果:物理是半透明的时候可以透过物体看到被遮挡的物体Unity中的设置:开启alpha混合,就会根据透明度进行渲染 开启代码: BlendSrcAlphaOneMinusSrcAlpha含义:混合= 原物体的alpha值的百分比 + (1-原物体的alpha值的百分比)Tip:不要将开启的代码写在CG代码的里面,且后面不要带分号将渲染队列添加到T...原创 2019-11-18 23:00:55 · 1141 阅读 · 0 评论 -
UnityShader—LOD值与渲染队列
LOD值与渲染队列什么是LOD值?LOD值指的是LOD Level of Detail, Unity根据LOD来设置使用不同版本的Shader;每次的运行,只会执行SubPass的一部分,每一个SubPass里面都会指定一个LOD,相当于一个等级,然后Unity执行的时候,根据等级来选择执行哪一个SubPass。脚本里面可以创建一个shader的public变量,以及支持的最...原创 2019-11-18 22:58:05 · 780 阅读 · 0 评论 -
UnityShader—将两个纹理附加并将其中的一个纹理循环显示
Shader"Custom/UVAnimation"{Properties{ // 设置纹理1以及纹理2_MainTex("Texture",2D)="white"{}_SubTex("SubTexture",2D)="white"{}}SubShade...原创 2019-11-18 22:55:37 · 1320 阅读 · 0 评论 -
UnityShader—使用shader完成一个水面波动的效果
Shader"Custom/SinShader"{Properties{_MainTex("Texture",2D)="white"{}}SubShader{Tags{"RenderType"="Opaque"}LOD100...原创 2019-11-18 22:48:41 · 1251 阅读 · 0 评论