Unity
文章平均质量分 84
monk_CD
这个作者很懒,什么都没留下…
展开
-
Unity 2D和3D对象的点击
1.2D对象响应点击(1)Canvas对象上有Graphic Raycaster(2)被点击的对象加上Image,并勾选Raycast Target(3)场景里有唯一对象挂上EventSystem和StandaloneInputModule(4)被点击的对象加上Button, 然后调用: GetComponent<Button>().onClick.AddListener...原创 2018-07-02 01:13:21 · 2949 阅读 · 2 评论 -
Unity Shader 记录
1.UnityObjectToClipPos(float4 pos)把pos从object space 转换到 clip space.2.把法线从局部控件转换到世界空间(1)UnityObjectToWorldNormal(float3 normal)(2)mul(i.normal, unity_WorldToObject);3.片元-->模版测试-->...原创 2018-06-12 20:49:35 · 1009 阅读 · 1 评论 -
Unity的音频
最近做了项目的音频的播放,总结一下。主要要熟悉三个东西:1.AuidoSource这个是音频的播放器,可以存在多个(1)AudioClip要播放的音频文件(2)SpatialBlend 为0是2D音效,为1是3D的音效(3)play接口默认播放AudioSource的clip属性的音频,如果再次播放另外一个音频,那么会中断之前的播放的音频,播放新的。(4)Play...原创 2018-05-19 13:52:31 · 4472 阅读 · 0 评论 -
Unity 镜像sprite
项目中有使用到了很多对称的图片,于是美术哥为了减少图片占用的大小,提出要程序来将做对称,美术只需要出一半的图,剩余的一半有程序实现对称。参考文章:点击打开链接。 自己实现了一版本,将这个组件挂在拥有Image的对象上就可以了,要弄清楚几个点:1.RectTransform中各项数值的意思2.ModifyMesh调用时机(UGUI填充了图元数据后,会调用虚函数ModifyMesh给用户修改数据的机...原创 2018-04-08 20:22:14 · 3110 阅读 · 0 评论 -
unity 陀螺仪控制节点旋转
/******************************************************************** Desc: 陀螺仪对相机的逻辑类。*********************************************************************/using System;using System.Col...原创 2018-03-30 15:47:15 · 1736 阅读 · 0 评论 -
List 中的元素排序
要求:策划对于列表中显示的内容需要进行排序,比如先按人物等级从高到底,如果等级相同,则按贡献度从高到底,如果贡献度相同,则按id进行排序实现:public enum SortType{ None, Ascend, Descend,}public class SortFieldData{ //排序字段的名字 public string name;...原创 2018-03-24 14:48:05 · 573 阅读 · 0 评论 -
Unity渲染顺序
参考:http://blog.csdn.net/u011748727/article/details/68947207一.影响渲染顺序的因素有:1.Camera Depth两个Camera进行渲染时,Depth值越大,那么渲染的物体就会在更上面。2. Z值同一个camera下,如果两个物体的shader的深度写入(ZWrite On)和深度比较(ZTest)都是开启的,那么距离camera更近的将...原创 2018-03-22 16:48:29 · 6672 阅读 · 2 评论 -
Unity Asssetbundle问题记录
问题1最近在做动态加载lightmap的工作,具体参见另外一篇文章: ,这篇文章说说遇到的一个坑。 大概是这样的:我们项目分成两个工程,一个工程是程序的代码工程,另外一个工程是美术使用的工程,其中包含了所有的资源,然后打包资源的时候是使用美术的工程进行打包,打出的资源给代码工程使用。我们的shader都在美术工程里面,然后会把用到的所有shader都打包到一个AssetBundle中,...原创 2018-03-04 21:23:52 · 1816 阅读 · 0 评论 -
Unity Animation 的使用
1.判断动画是否播放完成(1) 循环动画 if(animation.IsPlaying("run") && animation["run"].normalizedTime > 1.0f){ Debug.log("播放了一次")} 注:循环动画会一直播放,所有我们可以判断的是它是否播放了一次(2) 非循环动画if(!animation.IsPl原创 2018-02-01 20:07:10 · 2910 阅读 · 0 评论 -
Unity 手机的旋转控制
代码如下:using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class ScreenRotate : MonoBehaviour { // Use this for initialization void Star...原创 2018-07-05 23:08:27 · 2854 阅读 · 0 评论 -
Unity 图片开启不同选项内存占用
在s8手机上测试结果1.未改动2.只改动压缩方式(RGBA32 -> ETC2 8bits)3.只改动Read/Write Enabled (开启)4.只改动Min Maps (开启)原创 2018-07-11 22:14:33 · 913 阅读 · 0 评论 -
Unity UI和场景适配
1.ui适配初始情况:1.为什么要适配? 因为通常我们做ui的时候,会使用一个标准分辨率作为参考,然后所有ui在这个分辨率下都能正确显示,我们游戏使用的是1136x640这个分辨率。但是当我们在面对不同的手机分辨率的时候,如果我们不缩放ui的宽和高,那么我们的ui将不能正确显示,比如上图的背景,只占据了整个显示区域的中心部分。2.适配ui方法(1)高度匹配(宽高缩放比一致)...原创 2018-07-29 18:11:06 · 4294 阅读 · 0 评论 -
Unity 自定义协程请求
public class RequestAsync : IEnumerator{ private WWW mWWW; private int i = 0; public object Current { get; set; } public bool MoveNext() { Debug...原创 2019-04-18 16:25:01 · 537 阅读 · 0 评论 -
C#和Unity的null
public class IsNull : MonoBehaviour { public GameObject obj = null; // Use this for initialization void Start () { Debug.Log("obj == null : " + (obj == null)); Debug.Log("(obje...原创 2019-04-17 10:47:27 · 1400 阅读 · 0 评论 -
Unity Android记录
1.启动的时候就崩溃掉,没有错误日志最后在androidmanifest.xml中加上了红框中的那句就好了,强制为横屏的: 2.android锁屏和旋转屏幕时闪退在AndroidManifest.xml中加上如图的内容, 防止游戏从横版切换到锁屏的状态的竖屏重新调用了一次activity的生命周期而引起的闪退。 ...原创 2018-12-21 15:33:00 · 489 阅读 · 0 评论 -
Unity 记录
1.Input.GetMouseButtonDown 和 Input.GetMouseButton区别Input.GetMouseButtonDown 按一下鼠标执行一次,一直按着也只会执行一次Input.GetMouseButton 按下鼠标就一直执行,所以按一下可能会执行多次 2.Input.GetAxis可以用于获取特定虚拟轴的移动量,比如Input.GetAxis("...原创 2018-10-23 14:05:15 · 511 阅读 · 0 评论 -
坐标系变换
1.思考方式:假设有两个坐标系A和坐标系B,在B中的(1,2,3)有一个点p, 我们要将点p变换到坐标系A中去,此时我们保持点p保持不动,然后我们变换坐标系B,使坐标系B的原点和轴与坐标系A重合,此时得到一系列平移旋转的组合,然后我们也可以以这些组合的相反方式进行变换点p, 就可以得到p在坐标系A下的坐标。要么变换空间坐标轴,要么变换空间的中的点。因为:变换坐标系M下的一个点从(0,0,0)到(1...原创 2018-09-05 15:50:29 · 644 阅读 · 0 评论 -
Unity 自定义Log系统
原因1.测试跑IOS的时候,游戏卡死,但是却无法查看日志,因为必须将手机插在mac机器上,用xcode才能实时看日志。2.Android虽然卡死后,可以再插上电脑,通过AndroidStudio查看已经输出的日志,但是也会遇到看不到日志,或者手机插上无法被ADB侦测的问题。 目标1.让日志可以输出到3个地方:(1)控制台(2)界面 (3)文件2.能输出游戏指定模块的日志...原创 2018-08-14 20:36:43 · 4541 阅读 · 1 评论 -
UnityShader中的Queue
官方解释:Rendering Order - Queue tagYou can determine in which order your objects are drawn using the Queue tag. A Shader decides which render queue its objects belong to, this way any Transparent shaders原创 2018-01-19 00:04:53 · 5354 阅读 · 0 评论 -
Unity工程中 .Meta 文件的来龙去脉
如果你在游戏开发过程中使用诸如SVN的版本控制工具,那你必须得理解Meta文件的作用。在游戏场景中引用一个游戏资源,Unity并不直接按照文件路径和名称,而是使用一个独一无二的GUID来指向工程里的该资源文件。这个GUID储存在Unity工程为每个资源和文件夹生成的Meta文件里。 使用GUID的好处就是,即使你移动、重命名或者修改资源的内容,这个资源仍然可以通过GUID来被引用(只要GUID不变转载 2018-01-18 22:47:47 · 605 阅读 · 0 评论 -
unity渲染路径
写在前面自己写过Vertex & Fragment Shader的童鞋,大概都会对Unity的光照痛恨不已。当然,我相信这是因为我们写得少。。。不过这也是由于官方文档对这方面介绍很少的缘故,导致我们无法自如地处理很多常见的光照变量。这篇我们就来讨论下Unity内置的一些光照变量和函数到底怎么用。以下内容均建立在Forward Rendering Path的基转载 2017-09-19 22:02:35 · 1227 阅读 · 0 评论 -
全面理解Unity加载和内存管理
转载自:http://www.ceeger.com/forum/read.php?tid=4394最近一直在和这些内容纠缠,把心得和大家共享一下:Unity里有两种动态加载机制:一是Resources.Load,一是通过AssetBundle,其实两者本质上我理解没有什么区别。Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载资源,而一般Ass转载 2016-07-16 18:37:03 · 455 阅读 · 0 评论 -
深度缓冲区,RenderQueue、ZWrite和ZTest
http://blog.csdn.net/zhuyingqingfen/article/details/18979547http://blog.csdn.net/lysc_forever/article/details/13614449(1)什么是深度? 深度其实就是该像素点在3d世界中距离摄像机的距离。离摄像机越远,则深度值(Z值)越大。(转载 2016-06-01 22:53:52 · 755 阅读 · 0 评论 -
Awake OnEnable Start Update LateUpdate FixedUpdate
先看图:每个cube都吸附了一个一样的脚本。Awake:(1) 当我们一个Obj (obj已经enable)吸附了一个脚本,无论该脚本是否Enable,Awake在游戏运行开始都会调用.(2) 如果脚本吸附的obj,没有enable,那么Awake是不会执行的。(与(1)对比)(3) 优先于任何Start()之前执行。(4) 只会执行一次原创 2016-03-20 15:23:42 · 1707 阅读 · 0 评论 -
Unity中Camera的Clear flags,Culling Mask,Depth参数
1.Clear flags参数 它的作用相当于Directx中clear()函数. 这个参数有四个可选值:Skybox,Solid Color,Depth only,Don't clear. (1)指定为Skybox的时候,相当于将背景设置为天空盒 (2)指定为Solid Color的时候,相当于将背景设置为固定的一种颜色 (3)指定为Depth only的时候,原创 2016-01-11 23:05:45 · 4682 阅读 · 0 评论 -
Unity3D的四种坐标系
【Unity3D的四种坐标系】1、World Space(世界坐标):我们在场景中添加物体(如:Cube),他们都是以世界坐标显示在场景中的。transform.position可以获得该位置坐标。2、Screen Space(屏幕坐标):以像素来定义的,以屏幕的左下角为(0,0)点,右上角为(Screen.width,Screen.height),Z的位置是以相机的世界单位来衡量转载 2015-10-27 17:06:53 · 397 阅读 · 0 评论 -
Foward渲染路径下的光照
1.在Camera的渲染路径为Forward的时候(1)2个方向光和4个点光源,RenderMode 都为 Not Important时只会调用ForwarBase,不会调用ForwarAddshader中的 ForwardBase : _LightColor0 的xyzw都是0,_WorldSpaceLightPos0 的xyzw都是0 ForwardAdd: 不会被调原创 2017-10-27 14:13:59 · 485 阅读 · 0 评论 -
Material 和 ShareMaterial 区别
官方定义:material:Returns the first instantiated Material assigned to the renderer.Modifying material will change the material for this object only.If the material is used by any other renderers, this wil...原创 2017-10-28 15:54:14 · 2373 阅读 · 0 评论 -
工作记录(ljs)
2018.1.16 今天主要做了要对字体进行勾边的效果,要能控制描边的宽度,看了UGUI自带的outline的实现方式,它本质是将原文本多渲染了4次,这4次的文本的顶点位置都相对原来文本在上下左右进行了一定的偏移,这样产生的描边效果。这种方式效率不高,不过也可以用的。我后来按照网上的方法让它横竖都渲染更多次,来达到描边宽度控制的效果,但是效率特别低,当像背包物品出现这种描边文字的时候,每个文本...原创 2018-01-17 22:49:09 · 807 阅读 · 0 评论 -
unity3d点击屏幕判断是否击中场景中物体
问题: 现在要做点击屏幕,然后判断是否击中了3d场景中的一个物体.(就像子弹发射出去,打击目标一样)思路: 一开始我想的是,我点击屏幕,那么拥有点击处的坐标,然后从点击处创建一个gameobject,然后沿着直线发射出去,然后检测是否发生碰撞.然后我就这样做: void Update () { if(Input.GetMouseButtonDown(0))转载 2015-10-27 18:12:14 · 8645 阅读 · 0 评论 -
SerializeField和Serializable
Serialize功能Unity3D 中提供了非常方便的功能可以帮助用户将 成员变量 在Inspector中显示,并且定义Serialize关系。简单的说,在没有自定义Inspector的情况下所有显示在Inspector 中的属性都同时具有Serialize功能。换句话说,就是你在Inspector看到什么,保存游戏的时候,这些值就会被保存成二进制文件。本文说说可转载 2018-01-16 11:10:33 · 638 阅读 · 0 评论 -
UGUI 图片灰显裁剪
今天项目出现一个问题,我们灰显的图片无法被viewport进行裁剪,因为灰显的图片使用了我们自定义的shader,然而里面却没有裁剪的功能。 所以网上搜了一下, 大概解决办法就是,用原生的UGUI的shader, 然后添加上灰显的代码就可以了,代码如下:Shader "UI/Default"{ Properties { [PerRendererData] _MainTex ("S原创 2018-01-23 10:28:30 · 730 阅读 · 0 评论 -
unity中的rigibody 和 collider 讲解
dynamic object 当一个object吸附了:1.collider (接受碰撞)2.rigibody (受到物理引擎的控制)它就是一个dynamic object,此时的对象会收到unity 的物理引擎的影响,接受碰撞,碰撞时会受到力的作用进行移动static object 但一个object吸附了:1.collider 此时它是一个静态物体,原创 2016-05-29 20:42:51 · 6296 阅读 · 0 评论 -
Unity 5 中的全局光照技术详解
(文章较长,请耐心阅读)简介全局光照,简称GI,是一个用来模拟光的互动和反弹等复杂行为的算法,要精确的仿真全局光照非常有挑战性,付出的代价也高,正因为如此,现代游戏会先一定程度的预先处理这些计算,而非游戏执行时实时运算。同一场景里:没有照明(左),只有直接光源(中),和有间接光源的全局光照(右)的表现,注意颜色如何在不同的表面进行光的”反弹”,产生更真实的结果。在本转载 2017-10-25 23:03:06 · 342 阅读 · 0 评论 -
Unity lightmap shader
一、光照贴图制作:实时光照效果:使用光照贴图步骤:1.选择要灯光贴图的模型,然后设置为Lightmap Static2.光源Baking设置为Baked3.选择Windows/Lighting,打开Lighting界面,1》选择Scene 选项卡,设置Ambient Gi为Baked转载 2017-10-24 15:33:09 · 3785 阅读 · 1 评论 -
unity shader _MainTex_TexelSize 和 UNITY_UV_STARTS_AT_TOP 的作用
转载:http://blog.csdn.net/WPAPA/article/details/72721185我们先来看一段代码:#if UNITY_UV_STARTS_AT_TOPif (_MainTex_TexelSize.y 0){ o.uv.w = 1 - o.uv.w;}#endif123456_MainTex_TexelSize,这个变量的从字面意转载 2017-10-23 21:12:36 · 6216 阅读 · 3 评论