unity

Unity 进度条3D制作(3D版)

巧了我就是萌 提交于 2020-01-06 04:48:51
昨天我们一起学习了2D进度跳的制作,那么趁着我们脑海中还残存昨日的记忆,今天继续学习另一种方法: 实现思路: 当鼠标悬浮Start按钮->实例化物体并显示进度->100/100->进入游戏场景;      鼠标离开按钮进度还原为 0/100      直接点击Start按钮也可完成。 1,首先我们导入NGUI资源包,在当前工程的场景下创建UI。 2,在Herarchy下添加平行光,在Panel下添Button。  此处Background没有选择背景图片,即背景色为默认值,此处label设置字体显示Start,颜色红色。 3,另外还需在Panel下添加一个Label用于显示进度的百分比,我命名为process_lab. 4, 万事俱备,只欠脚本了。 OverButton.cs 是用于检测鼠标是否悬浮于Start上. 如果真的悬浮于Start上那么我们可以定义一bool值IsOnButton并且置为true,否则IsOnButton=false; using UnityEngine; using System.Collections; public class OverButton : MonoBehaviour { public static bool IsOnButton; // Use this for initialization void Start () {

关于Unity中的几何体,材质和FBX模型

若如初见. 提交于 2020-01-06 04:48:09
一、创建几何体的类型 1: 创建平面 Plane; 2: 创建立方体 Cube; 3: 创建球体 Sphere; 4: 创建胶囊体 Capsule; 5: 创建圆柱体 Cylinder; 6: 3D文字 3D text; 创建出来的几何体,自带这些组件: 1.transform 2.Mesh Filter:网格 3.Collider:碰撞体 4.Mesh Renderer:网格绘制,把材质拖进Material属性中就可以绘制出几何体的图案 二、材质 在resources文件夹下面创建一个metarial文件夹,里面放几何体的材质球。 一般是先创建材质球,把贴图拖进材质球的贴图属性中,然后在几何体中的材质属性栏,把贴好图的材质球拖进去,几何体才可以显示纹理, 还有一种方法就是直接把贴图拖到scene视图的几何体上面,然后Unity编辑器会自动帮我们在Materials文件下面生成一个材质球。 1.材质球的shader着色器 shader着色器常用Standard和Mobiie/Diffuse模式 (1)Standard模式  Albedo:反射贴图,也就是材质的贴图  Metallic:反射光线强度 (2)Mobiie/Diffuse(使用的比较多)模式  漫反射,用的是贴图的本色。  Tiling:如果贴图属性Wrap Mode为Repeat,那么这里是设置平铺的个数,x=1,y

Unity3D基础知识梳理

为君一笑 提交于 2020-01-06 04:47:52
这段时间在做Unity的项目,这差不多是我的第一次实战啊~然后公司来了实习的童鞋要学Unity,但是我一向不靠谱啊,所以只能帮他们稍微梳理下基础的东西了啊,唉~学长只能帮你们到这里了~顺便就把自己这两天整理的一些基础知识分享上来了,闲话不多说~ 美术部分: Unity的话主要还是分两块吧,第一块是美术(自己都不懂~这里允许我稍微带过一下吧~),美术的话主要包括3d 模型、材质、纹理(贴图)这几部分吧,当然你也可以说还有shader(着色器), Unity 本身拥有几十种 shader ,也可以根据自己的需要使用 shaderLab 语言来编写 shader ,这个对我来说相当有难度,所以一般只用 Unity 自带的和网上“流传”的。 接下来是程序方面的: 基本组成: Scene 场景,类似于 Flash 中的 stage ,用于放置各种对象。 GameObject,可以携带各种Component(每个GameObject至少带有Transform组件,所有的组件都可以从顶部菜单Component里面找到并添加给游戏对象)。 Component组件,附加在GameObject上,不同的组件可以使GameObject具有不同的属性,Transform、碰撞器、刚体、渲染器等都是组件,脚本也是组件的一种,对象所表现出来的行为都是由组件实现的。 脚本语言: C#、Javascript

unity中的透视投影矩阵

て烟熏妆下的殇ゞ 提交于 2020-01-06 04:35:36
一,unity中的Matrix4x4 例如一个矩阵的数据是: 0.9758,0,0,0,0,1.73205,0,0,0,0,-2.25,-16.25,0,0,-1,0 则实际矩阵是: M= m00 m01 m02 m03 m10 m11 m12 m13 m20 m21 m22 m23 m30 m31 m32 m33 = 0.9758 0 0 0 0 1.73205 0 0 0 0 -2.25 -16.25 0 0 -1 0 即将数据一行一行、每行四个写出来形成的矩阵。 Matrix4x4是列主序,即跟opengl一样,使用时是列向量左乘矩阵M*v这种形式。 二,unity中的透视投影矩阵 经过试验,unity中的透视投影矩阵公式与opengl中完全一样,为: 例如前面的矩阵M,便是 near=5 far=13 fov=60 aspect=1.775 时的投影矩阵。 来源: https://www.cnblogs.com/wantnon/p/7248999.html

Aop学习笔记

旧街凉风 提交于 2020-01-05 05:40:48
在学习编程这段时间我想大家都是习惯了面向过程或者面向对象的思想来编程,较少或者没有接触过面向方面编程的思想。 那么什么是面向方面(Aspect)——其实就是与核心业务处理逻辑无关的切面,例如记录日志、事务控制、缓存处理、权限控制等。 这些行为与商业核心业务逻辑是毫无关系的也就是可以完全剥离出来形成一个统一的解决方案,其实这就是Aop的核心思想。接下 来讲解关于微软提供的Unity组件中的AOP。 一、AOP中的几个概念 1):切面(Aspect):对横切性关注点的抽象,说白了就是对某种功能的抽象,日志、事务、权限等都是一个切面; 2):连接点(Joinpoint):在核心业务逻辑中可以进行切入的点,可以理解为切入点的集合(商业逻辑中可能要切入日志、权限、事务等,这些就是连接点); 3):切入点(Pointcut):指对连接点进行拦截的定义,切入点决定了Advice需要切入的具体连接点,Advice->Pointcut->Joinpoint; 4):通知(Advice):拦截到连接点之后所要做的事情(前置通知、返回后通知、环绕通知、抛出异常后通知等); 5):目标对象(Target Object):需要代理的目标对象,目标对象本身只剩下了干净的业务代码,日志、权限等功能需要AOP切入; 6):代理对象(Proxy Object) : 通过AOP容器产生的对象,是由Target

Unity3D游戏GC优化总结---protobuf-net无GC版本优化实践

▼魔方 西西 提交于 2020-01-05 04:56:02
一  protobuf-net优化效果图   protobuf-net是Unity3D游戏开发中被广泛使用的Google Protocol Buffer库的c#版本,之所以c#版本被广泛使用,是因为c++版本的源代码不支持Unity3D游戏在各个平台上的动态库构建。它是一个网络传输层协议,对应的lua版本有两个可用的库:一个是proto-gen-lua,由tolua作者开发,另外一个是protoc,由云风开发。protobuf-net在GC上有很大的问题,在一个高频率网络通讯的状态同步游戏中使用发现GC过高,所以对它进行了一次比较彻底的GC优化。下面是优化前后的对比图: protobuf-net优化前GC和性能效果图 protobuf-net优化后GC和性能效果图 二  Unity3D游戏GC优化概述   有关Unity3D垃圾回收的基本概念和优化策略Unity官网有发布过文章: Optimizing garbage collection in Unity games 。这篇文章讲述了Unity3D垃圾回收机制,和一些简单的优化策略,讨论的不是特别深入,但是广度基本上算是够了。我罗列一下这篇文章的一些要点,如果你对其中的一些点不太熟悉,建议仔细阅读下这篇文章:   1、C#变量分为两种类型:值类型和引用类型,值类型分配在栈区,引用类型分配在堆区,GC关注引用类型   2

Unity 当一个场景中有多个按钮时,怎么编写点击按钮响应事件更合理

南楼画角 提交于 2020-01-04 12:41:53
Unity 当一个场景中有多个按钮时,怎么编写点击按钮响应事件更合理 比较 代码 比较 当场景中有多个很多按钮时,先Public一个Button,然后给这个Button赋值,再编写点击按钮要执行的操作,最后给每个按钮写按钮点击响应事件。当场景中按钮少时可以这样执行,当有很多按钮时,会写到你怀疑人生0.0 。新的方法省去了从脚本声明按钮的方法。 在场景中创建完新按钮后,将size+1,再将按钮拖拽到里面即可 代码 // ======================================================== // 脚 本 功 能: // 作 者:CYC // 创建时间:2019/12/17 08:53:01 // 版 本:v 1.0 // ======================================================== using System . Collections ; using System . Collections . Generic ; using UnityEngine ; using UnityEngine . UI ; public class SwitchClickBtn : MonoBehaviour { public List < Button > buttons = new List <

Unity中 XML读写与加密

痴心易碎 提交于 2020-01-04 00:14:00
整体思路解析 数据存储和加密的主要逻辑思路: 使用XmlSerializer类对需要保存的数据类进行序列化操作,得到一串字符串。 将得到的字符串使用RijndaeManaged类和ICrytoTransform类进行加密操作,获得加密之后的字符串。 根据平台类型,确定文件保存的路径。 使用StreamWriter类将字符串保存到文件中。 数据加载和解密的主要逻辑思路: 根据存档文件的路径,使用StreamReader类读取文件中的内容(一串加密过的字符串)。 使用RijndaeManaged类和ICrytoTransform类对读取的文件内容进行解密操作,获得一串解密后的字符串。 使用XmlSerializer类对解密后的字符串进行反序列化操作,获得具体的游戏数据,并使用数据对游戏中的数据进行转换操作。 具体实现 首先创建XmlManager类,此类用来序列化与写入操作: using System ; using System . Collections ; using System . Collections . Generic ; using System . IO ; using System . Security . Cryptography ; using System . Text ; using System . Xml ; using System . Xml .

[原]Unity3D深入浅出 - 新版粒子系统 (Shuriken)

余生颓废 提交于 2020-01-03 05:26:27
Shuriken粒子系统是继Unity3.5版本之后推出的新版粒子系统,它采用了模块化管理,个性化的粒子模块配合粒子曲线编辑器使用户更容易创作出各种兵分复杂的粒子效果。 创建一个粒子系统的方式有两种: 1.分别选择菜单栏中的 GameObject - Create Other - Particle System 2.创建一个Empty对象,在Component - Effects - Particle System 下面是新版粒子系统的属性面板,将旧版粒子系统以Module的方式整合了进来。 创建一个粒子系统后, 1.默认展开的是粒子系统的初始化模块: 此模块为固有模块,不可删除或者禁用。该模块定义了粒子初始化时的持续时间、循环方式、发射速度、大小等一些列基本的参数。 2.Emission:发射模块 控制粒子的发射速率(Rate),在粒子持续时间内,可实现某个特定时间生成大量粒子的效果,可模拟爆炸效果生成一大堆的粒子。 3.Shape :形状模块 定义粒子发射器的形状,可提供沿形状表面法线或随机方向的初始力,并控制粒子的发射位置以及方向。 4.Velocity over Lifetime :生命周期速度模块 制着生命周期内每一个粒子的速度,对有着物理行为的粒子效果更明显,但对于那些简单视觉行为效果的粒子,如烟雾飘散效果以及与物理世界几乎没有互动行为的粒子,此模块的作用就不明显了。

unity光源自带的Halo效果

老子叫甜甜 提交于 2020-01-03 03:37:23
之前看过一个用来实现光晕效果的shader,但是这个shader似乎只适用于球状物,对于非球状物就不是很友好。效果如图1、图2所示。 图1 用shader实现的光晕效果 图2 光晕shader对非球状物体很不友好 今天发现unity中的光源居然自带halo效果(版本是2019.1.4f1),在inspector面板勾选Draw Halo即可,用它就可以来模拟光晕,效果还不错。如图3所示。 图3 用Draw Halo来实现光晕效果 搭配standard shader中的emission,感觉贼好用。(如图4的不明物体所示) 图4 Draw Halo和Emission配合使用的某不明物体 之前用的那个shader的实现原理似乎只是将纹理沿着模型方向伸展,然后再用一个类似于高光反射模型计算一下,得到的光晕并不是真正的光,所以暂时无法实现光照之间的交互(如阴影、反光等等)。这个halo就不一样了,由于它是跟光源捆绑在一起的,所以一般光源能实现的光照交互它基本上都有!如图5所示的反射效果。 图5 看左边球体上的红色反光! 当然这个halo也不是没有缺点,比如说在模拟非球形的光晕时还是略僵硬。如图6所示。 图6 用Draw Halo模拟非球状物体的光晕 图6中cube的scale分别是1、1、1,point light的range是2,必须要把point