GUI和GUILayout是Unity提供的UIKit.在使用GUI的Controls时都要求设置Rect參数.没办法做到自己主动排版,给适配带来难度.而GUILayout的设计就是为了弥补这个缺陷,GUILayout是在GUI的基础之上复合了一套Layout的排版逻辑. GUI class in UnityEngine Description The GUI class is the interface for Unity's GUI with manual positioning. See…
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; using System.IO; public class DownLoadAssetBundle : MonoBehaviour { private string mainAssetBundleURL = @"http://www.XXX.com/AssetBundles/Ass…
本文主要介绍: 关于Unity container配置,注册映射关系.类型,单实例.已存在对象和指出一些container的基本配置,这只是我关于Unity的学习心得和笔记,希望能够大家多交流相互学习到更多知识,谢谢大家的支持. 我们可以通过以下两种方法给Unity container中创建映射: RegisterType:这个方法可以往container中注册一种类型或映射关系,当我们需要调用该类型的实例时,container会自动实例化该类型的对象,无需通过new someName方法实例化…
目录 1. 概述 2. 详论 2.1. 创建材质 2.2. 着色器 2.2.1. 名称 2.2.2. 属性 2.2.3. SubShader 2.2.3.1. 标签(Tags) 2.2.3.2. 渲染状态(RenderSetup) 2.2.3.3. 通道(Pass) 2.2.4. 回退(FallBack) 2.3. 渲染管线 1. 概述 在上一篇文章<Unity3D学习笔记2--绘制一个带纹理的面>中介绍了如何绘制一个带纹理材质的面,并且通过调整光照,使得材质生效(变亮).不过,上篇文章隐藏了…
在上一篇文章中(Unity映射注册)中概要介绍了Unity中的映射机制,本节主要介绍对象获取,包括默认获取,通过名称获取,获取全部对象,同时通过加载配置文件,然后再获取对象. 通过代码获取对象 方式1:默认获取 IUnityContainer container = new UnityContainer(); //默认注册(无命名) container.RegisterType<ILogger,ServiceLog>(); //获取对象ILogger serviceLog = containe…
在上一篇文章中(认识Unity)中概要介绍了Unity和Ioc,本节主要介绍IoC中的注册映射,并使用代码和配置文件两种方式进行说明. 定义依赖注入相关信息 定义ILogger接口 public interface ILogger { void Info(string message); void Warning(string message); void Error(string message); void Fatal(string message); void Exception(stri…
Unity是什么? Unity是patterns & practices团队开发的一个轻量级.可扩展的依赖注入容器,具有如下的特性: 它提供了创建(或者装配)对象实例的机制,而这些对象实例可能还包含了其它被依赖的对象实例. Unity允许将预先配置的对象注入到类中,实现了inversion of control (IoC)的功能.在Unity中,支持constructor injection(构造器注入), property setter injection(属性设值注入)以及method ca…
遇到的问题: 1 第11节Scripting the pressure plates中需要获取子物体的Animator组件,教程使用的语句如下: ”SwitchAnim = GetComponentInChildren<Animator>();“ 经测试,无法获取,产生了 “Animator has not been initialized”的警告 解决方法:直接查询子物体,然后在获取子物体的组件 “SwitchAnim = gameObject.transform.GetChild(0).G…
今天组长让我写一个界面,其中用到了下拉条,我的印象还停留在以前的NGUI有现成的组件,但是uGUI没有的那阶段,组长跟我说uGUI现在也有了,研究了一下,发现real方便哦,今天就来简单说一下用法吧. Dropdow 用法也就是点开会有一个下拉列表,选中的可以显示.那么第一个问题来了 就是怎么在下拉列表里填上我们所需要的选项,显示我们需要的个数首先呢,遇到一个没有用过的组件不要紧张,可以先看看面板上都有些什么属性,一般来说Inspect界面上的都是可以获取的,有些事可以改的有些的不能改的,如上图…
一 官方教程: http://developer.egret.com/cn/github/egret-docs/Engine3D/getStarted/getStarted/index.html 大部分可以跟着官方教程走.学习到Unity插件.GUI时,发现插件和素材都没了. 二 Unity插件 教程里没有插件. 官方给的插件地址:https://github.com/egret-labs/egret-3d/tree/master/ExportTools 已经无效. 得到Egret3D官方群的文…
1 单张纹理 1.1 纹理 使用纹理映射(Texture Mapping)技术,我们把一张图片逐纹素(Texel)地控制模型的颜色. 美术人员建模时,会在建模软件中利用纹理展开技术把纹理映射坐标(Texture-Mapping Coordinates)存储在每个顶点上.纹理映射坐标定义了该顶点在纹理中的2D坐标. 纹理映射坐标通常是2维坐标(u,v).也被称为UV坐标.(u为横向,v为纵向) 顶点UV坐标通常被归一化到(0, 1)范围内,但纹理采样的时候常常也有不在(0,1)范围内的坐标. Op…
『 知识点』 [射线] 射线检测碰撞 『游戏实战』 个例 [E]<愤怒的小鸟> 资源 免费Unity基础教程(中文电子书) [E] noobtus(Unity游戏教程)…
场景,顾名思义就是我们在游戏中所看到的物品.建筑.人物.背景.声音.特效等,基本上和我们玩游戏时所看到的游戏“场景”是同一个概念. Unity 3D中,“场景”是一个视图,我们通过“场景”这个视图,来编辑.布置游戏中玩家所能见到的图像和声音. 安装完并运行Unity 3D,会缺省打开一个AngryBots项目.我们在“Scene”视图中,就可以直接看到一个场景: 这个场景中的物件,会在Hierachy视图中通过层级关系列出来: 从上面这个层级关系我们看到,这个场景包括了:敌人.玩家.动态环境.静…
Unity具体实现依赖注入包含构造函数注入.属性注入.方法注入,所谓注入相当赋值,下面一个一个来介绍 1:构造函数注入 1.1当类有多个构造函数时,可以通过InjectionConstructor特性来指定某个构造函数来解析注入对象. [InjectionConstructor] public Student(IClass _class,string name) { ToClass = _class; Name = name; } 1.2构造函数中IClass参数,如果IUnityContain…
保留版权,转载请注明出处:http://blog.csdn.net/panjunbiao/article/details/9318811 在这一篇文章里,参照宣雨松的<Unity 3D游戏开发>第38页的例子,用C#写出我的第一个Unity项目 Hello Unity. 第一步,新建项目: 点击“Create Project”创建项目之后,我们看到项目中只有一个摄像机对象“Main Camera”. 并且Unity为我们创建了一个未命名(untitled)的场景,点击“File -> S…
1. Overview 2. Understanding Shader definition:code that define what the material can do in the environment classification: Surface Shader--容易编写,受光照等因素影响 Vertex and Fragment Shader(Pixels)--非常灵活,代码量大,写得好能提高渲染效率和降低开销 Fixed Function Shader--固定管线shader…
第一种方法,从Resources文件夹读取Prefab Assets/Resources文件夹是Unity中的一个特殊文件夹,在博主当前的认知里,放在这个文件夹里的Prefab可以被代码动态加载 直接上代码 GameObject Prefab = (GameObject)Resources.Load("Prefabs/Character"); Instantiate(Prefab); 第二种方法,绝对路径读取Prefab 这种方法仅限Editor模式使用,在制作插件的时候会经常用到 G…
Unity3D中的碰撞: 在unity中,有普通碰撞体Collider和触发器(Trigger)两种碰撞体,两个普通碰撞体会发生碰撞并产生力学现象,触发器则像是个无法触碰而又真实存在的东西,也会触发碰撞事件,但另一个物体会穿过它,碰撞发生的前提是两碰撞体有一方携带刚体(Rigidbody)组件. 物体对碰撞体进行处理的三个函数: void OnCollisionEnter(Collision collision){}://当碰撞体进入当前物体时触发的回调函数 void OnCollisionSt…
Unity使物体消失的三种方法 GameObject.Destroy(gameobjcet); //在下一帧破坏物体 gameObject.SetActive(false); //Unity2017新API,使用该方法设置物体是否存在于Hierarchy,active的新名称为activeSelf,无法直接修改,可以使用gameObject.activeInHierarchy()方法获取它的值. enabled = false; //直接在脚本中使用该语句可隐藏该脚本所绑定的GameObject…
其实我一直觉得我是个模棱两可的人,就计算机这块来说,自己还是想制作游戏什么的,但是又得考虑到现实就业的问题,所以现在自己主要在学安卓和javaweb.现在大概是心血来潮吧,突然想追逐下自己的理想,虽然不知道自己能走到什么地步.左手理想,右手现实,如果当初才上大学就能清楚自己真正想要什么并为之努力该多好,就不会浪费大把大把的时间.嘛,不发牢骚了,时间飞速的逝去,日子过得也跟流水一样. 使用的unity版本是最新的5.5.2 1. C#中的序列化是什么鬼? C# 序列化(Serialize)与反序列…
转载请注明出处: EnigmaJJ http://www.cnblogs.com/twjcnblog/p/5850648.html 术语 Canvas是Unity的原生组件,Unity的渲染系统使用Canvas来提供绘制在游戏世界中的分层几何结构. Canvas的职责是将他所包含的几何体组合成batches,生成合适的渲染命令并将这些命令发送给Unity的图形系统.所有这些都是由C++代码完成的,被称为rebatch或batch build.当Canvas被标记为需要rebatch时,该Canv…
Assets和Objects Asset是存储在硬盘上的文件,保存在Unity项目的Assets文件夹内.比如:纹理贴图.材质和FBX都是Assets.一些Assets以Unity原生格式保存数据,例如材质.另一些Assets需要通过处理转换到原生格式,例如FBX. Object是一系列序列化数据,这些数据描述了具体的资源实例,这可以是Unity使用的任意类型的资源,例如mesh,sprite,audio clip或animation clip.所有的Objects都是UnityEngine.O…
我想做的移动操作方式类似[流星蝴蝶剑].[龙之谷].[我的世界第三人称]的第三人称操作方式. 操作说明:W键会朝当前镜头方向前进,鼠标控制镜头旋转. 做前需知(先去稍微了解一下比较好): ①unity脚本的生命周期 ②旋转的欧拉角和四元数 ③简单三角函数知识 ④Unity基本的API(比如this.transform.position为对象的(x,y,z)坐标) 第一步:创建一个脚本move,写上脚本,并赋予我的人物. (注意:图片中的Parva是我给图片加的水印.) 第二步:给人物添加碰撞器和…
纹理可以用来存储任何表面属性. 可以通过使用渐变纹理来实现插画风格的渲染效果. 这项技术是由Valve公司提出的.Valve使用它来渲染游戏中具有插画风格的角色. 我们使用半兰伯特模型计算漫反射. 因为我们使用的实际上是一个一维纹理: 所以在片元着色器中,我们使用fixed2(halfLambert, halfLambert)作为uv坐标进行纹理采样. 代码实现如下: Shader "Unity Shader Book/Chapter 7/RampTexture" { Properti…
1 高度纹理 使用一张纹理改变物体表面法线,为模型提供更多细节. 有两种主要方法: 1.高度映射:使用一张高度纹理(height map)来模拟表面位移(displacement).得到一个修改后的法线值. 2.法线映射:使用一张法线纹理直接存储表面法线. 1.1 高度纹理 高度图中存储的是强度值(intensity).越浅越说明向外凸起,越深越向里凹. 缺点是计算复杂,消耗性能. 高度图也会与法线映射一起使用.给出表面凹凸的额外信息. 1.2 法线纹理 法线纹理中存储的是法线方向.法线方向的范…
1.原理 1.1.Phong模型 计算高光反射需要表面法线.视角方向.光源方向.反射方向等. 在这四个矢量中,我们实际上只需要知道其中3个矢量即可,而第4个矢量(反射方向r)可以通过其他信息计算得到: 这样,我们就可以利用Phong模型来计算高光反射的部分: m(gloss)是材质的光泽度,也被反称为反光度.它用于控制高光区域的"亮点"有多宽,m(gloss)越大,亮点就越小. m(spscular)是材质的高光反射颜色,它用于控制该材质对于高光反射的强度和颜色. c(light)则是…
在光照无法达到的区域,模型的外观通常是全黑的,没有任何明暗变化,这会使模型的背光区域看起来就像一个平面. 使用半兰伯特光照可以解决这个问题. 逐顶点光照技术也被称为兰伯特光照模型.因为它符合兰伯特定律. Valve公司在开发半条命的时候提出了半兰伯特光照模型. 半兰伯特光照模型没有使用max操作来防止n和I的点积为负值,而是对其结果进行了一个α 倍的缩放再加上一个β 大小的偏移. 绝大多数情况下,α 和β的值均为0.5,即公式为: 对于模型的背光面,在漫反射模型中点积结果将映射到同一个值,即0值…
本代码只适用于平行光. 1.逐顶点漫反射光照 1.1漫反射光照原理 1.2代码实现 在Properties语义块中声明一个漫反射颜色属性 Properties { //漫反射参数,用于调整漫反射效果 _Diffuse ("Diffuse", Color) = (1, 1, 1, 1) } 在SubShader语义块中定义一个Pass语义块. 在Pass的第一行指明光照模式. Tags{"LightMode" = "ForwardBase"} 在P…
Mathf.Lerp(float a,float b,float t)插值函数,当a < b时往a中插入t,以此来实现颜色,声音等渐变效果. GameObject.FindWithTag(string tag)通过标签得到实例化的对象,实现跨脚本操作对象 GameObject.GetComponent<>()获得对象的组件 控制物体旋转相关: Quaternion: 四元数 void Rotating(float h, float v) { Vector3 targetDir = new…
transform: transform是GameObject的一个默认的组件,其包含着该对象的几种属性,坐标(Position)以及旋转角度(Rotation)和尺寸(Scale). transform的子对象: transform.position 类型为Vector3,其值为该对象的世界坐标值 transform.localposition 类型为Vector3, 其值为以父对象的坐标为原点的坐标值 transform.rotation 类型为Vector3, 其值为该对象相对于初始状态的…