unity3d 学习笔记(两)】的更多相关文章

目录 1. 概述 2. 详论 2.1. 网格(Mesh) 2.1.1. 顶点 2.1.2. 顶点索引 2.2. 材质(Material) 2.2.1. 创建材质 2.2.2. 使用材质 2.3. 光照 3. 代码 1. 概述 上一篇文章<Unity3D学习笔记1--绘制一个三角形>中介绍了Unity3D的HelloWorld--绘制一个简单的三角形.不过这个三角形太简单了,连材质都没有.那么这里就将三角形扩展为一个矩形的面,并且为这个面贴上纹理. 2. 详论 2.1. 网格(Mesh) 前面说…
目录 1. 概述 2. 详论 3. 参考 1. 概述 在之前的文章中说到,一种材质对应一次绘制调用的指令.即使是这种情况,两个三维物体使用同一种材质,但它们使用的材质参数不一样,那么最终仍然会造成两次绘制指令.原因在于,图形工作都是一种状态机,状态发生了变化,就必须进行一次绘制调用指令. GPU实例化用于解决这样的问题:对于像草地.树木这样的物体,它们往往是数据量很大,但同时又只存在微小的差别如位置.姿态.颜色等.如果像常规物体那样进行渲染,所使用的绘制指令必然很多,资源占用必然很大.一个合理的…
目录 1. 概述 2. 详论 2.1. 自动实例化 2.2. MaterialPropertyBlock 3. 参考 1. 概述 在前两篇文章<Unity3D学习笔记6--GPU实例化(1)><Unity3D学习笔记6--GPU实例化(2)>分别介绍了通过简单的顶点着色器+片元着色器,以及通过表面着色器实现GPU实例化的过程.而在Unity的官方文档Creating shaders that support GPU instancing里,也提供了一个GPU实例化的案例,这里就详细…
unity3d学习笔记(一) 第一人称视角实现和倒计时实现 1. 第一人称视角 (1)让mainCamera和player(视角对象)同步在一起 因为我们的player是生成的,所以不能把mainCamera直接放到预支对象里,所以我们实现的方法就是让player和camera的相对位置不变 创建脚本 CameraFlow.cs用于控制mainCamera移动,把此脚本挂到mainCamera中, 同时设置mainCamera为刚体,重力为零(不然mainCamera会掉), 而且把mainCa…
目录 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--绘制一个带纹理的面>中介绍了如何绘制一个带纹理材质的面,并且通过调整光照,使得材质生效(变亮).不过,上篇文章隐藏了…
目录 1. 概述 2. 详论 3. 其他 4. 参考 1. 概述 在文章Unity3D学习笔记2--绘制一个带纹理的面中使用代码的方式创建了一个Mesh,不过这套接口在Unity中被称为简单接口.与其相对应的,Unity还提供了一套高级API来创建Mesh. 2. 详论 根据Unity文档的论述,使用高级接口能够得到更高的性能,能够跳过一些验证检查.但是这并不是最关键的,简单接口有个最大的缺点是顶点个数超过65535个时就有问题(至少在2019.4.3f1版本还是这样). 话不多说,直接上代码:…
目录 1. 概述 2. 详论 2.1. 实现 2.2. 解析 3. 参考 1. 概述 在上一篇文章<Unity3D学习笔记6--GPU实例化(1)>详细介绍了Unity3d中GPU实例化的实现,并且给出了详细代码.不过其着色器实现是简单的顶点+片元着色器实现的.Unity提供的很多着色器是表面着色器,通过表面着色器,也是可以实现GPU实例化的. 2. 详论 2.1. 实现 首先,我们还是挂接与上篇文章一样的脚本: using UnityEngine; [ExecuteInEditMode] p…
目录 1. 概述 2. 详论 3. 问题 1. 概述 在文章<Unity3D学习笔记11--后处理>中论述了后处理是帧缓存(Framebuffer)技术实现之一:而另外一个帧缓存技术实现就是渲染纹理了.通常来说,我们渲染的场景会直接显示到屏幕的颜色缓冲区,但其实纹理和屏幕一样都是二维的,通过把场景渲染到纹理,可以实现很多特别的三维应用场景.三维渲染引擎中,通常给相机封装一个渲染目标(Render Target)的接口,如果不设置,就渲染到屏幕:如果将其设置成一个纹理对象,就渲染到纹理. 2.…
学习安卓编程权威指南第五章的时候自己写了个简单的Demo来加深理解两个Activity互相传递数据的问题,然后将自己的学习笔记贴上来,如有错误还请指正. IntentActivityDemo学习笔记 题目:ActivityA登录界面(用户名.密码.登陆按钮),ActivityB(Edit,返回按键:SubmitButton).A界面输入用户名和密码传到B中,B验证用户输入的用户名和密码,如果错误就返回A,并用Toast 显示用户名和密码错误:如果正确,就在第二个 activity中显示一个Edi…
说到了网游那就涉及到服务器了,时下最火的属英雄联盟了,我也是它的粉丝,每周必撸一把,都说小撸怡情,大撸伤身,强撸灰飞烟灭,也告诫一下同仁们,注意身体,那么他的服务器架构是什么呢,给大家分享一下, 具体的是什么架构,因为没有源码,也不知道怎么回事,只能根据当前一些经验,还有撸的时候的体验猜想出来的.和实际有偏差,大家勿喷在这里只是分享,和实际的也应该相差不大. 英雄联盟服务器其实就是一个单服,单服下面有一些集群,有用户服务器,的用户服务器实际上就是QQ用户服务器QQ用户也是有服务器集群组成 客户端…
AudioClip 使用声音资源 unity3d资源可以被设置为声3d声音或2d声音.3d间的影响,越近声音越大 component: Audio source: 声音的发生物体 Audio listener:声音的接受者 一般放于主角中 两者一起使用否则将无意义. 代码声音简单的控制: //假设在拖入此脚本时.假设gameObject对象没有加入Audiosource组件.会自己主动加上 [RequireComponent(typeof(AudioSource))] public class…
本文和大家 和大家说说 Photon 解压后的目录结构 这里面最基本的我们 以后开发要用到的目录 就是  deploy目录,这个目录里 放的是要挂载的 server 当然我们的 server端也要放在里面,它里面有自带的一些server端应用 doc  顾名思义  帮助不大 lib 我们开发server 时候在 Visual Studio 要引用的库文件 src-server 我们可以顾名思义哈萨克斯坦 这里这个权利哈 版权声明:本文博客原创文章,博客,未经同意,不得转载.…
不是什么技术文章,纯粹是我个人学习是遇到一些觉得需要注意的要点,当成笔记. 1.关于调试,在Android下无法断点,Debug也无法查看,查看日志方法可以启动adb的log功能,或者自己写个GUI控件直接在屏幕上显示Info 2.所有自定义的编辑器扩展插件脚本必须放在Editor文件夹里,不然会导致编译程序时出错,放到Editor文件下,编译成游戏时才会忽略这些脚本 3.打包资源时,假设是在移动设备上使用,打包方式务必选择成:BuildTarget.AndroidBuildPipeline.B…
最近开始在学习Unity3D,在网上找到了一些教程利用晚上回家休息的时间自学了一下,我就是一个小白,对Unity3D什么都不懂,可能需要一些美工的功底.刚好有点,需要点编程的基础,也好我也有点,对C#很熟,看着Unity3D那么火,我也抽时间来研究研究,看看指不定哪天就用到了. 首先准备工作是要到官网上下载一个Unity3D软件 官网http://unity3d.com/cn/ 下载喜欢的版本,至少要下载4.X以上的版本,初学者完全够用了. 下载安装完成以后先不要着急去学习菜单.因为菜单太多了不…
目录 1. 绪论 2. 概述 3. 详论 3.1. 准备 3.2. 实现 3.3. 解析 3.3.1. 场景树对象 3.3.2. 绘制方法 4. 结果 1. 绪论 最近想学习一下Unity3d,无奈发现现在大部分教程不仅是视频形式的,面对的也是美术.设计之类的非程序员,更多的时候都是把Unity3d当作PS一样的工具来用,真正面对程序开发的教程反而非常少,更不用说希望能研究到一些底层图形技术的技术工作者了. 说一下我看的两本Unity3d书籍吧.第一本是<Unity 3D游戏开发(第2版)>(…
这一次的笔记的主要内容是单机和网游的数据存储,数据验证方式,在游戏的时候除了控制角色的行动,还涉及到用户角色的升级,经验,金钱赚取,道具购买,技能升级 等等一些数据的交易, 那么单机游戏和网游的区别如下如图: 单机购买流程: 单机游戏的数据存储都是在本地客户端存储的,验证简单,执行简单,在玩单机游戏的时候我想很多人都知道外挂是怎么回事吧没救是通过修改内存,或者是本地数据无敌,随时原地满血复活状态. 网游相对来说数据安全性就比较高了,前几年的网游还有外挂,比如说CF 开启外挂来直接枪枪爆头,隔墙爆…
AssetBundle 什么是AssetBundle? AssetBundle是把一些资源文件或场景文件,以某种方式保存在一个文件中.一个AssetBundle可以包含模型.材质.图片或场景等.但是AssetBundle不能包含脚本文件.(脚本打包时需要编译,界面逻辑的热更新依赖Lua) AssetBundle主要用于做热更新使用.   如何创建AB包 第一个参数: ----无 ----新建 ----删除未使用的AssetBundle 第二个参数: ----后缀:做资源高清和标清的区分,不能做资…
动画系统: 旧动画系统(帧动画系统:关键帧驱动,关键帧记录的数据进行插值移动) 1.添加Animation,添加到父物体上 2.添加动画片段 3.添加关键帧(子物体的坐标是相对于父物体的坐标),帧之间插值移动,关键帧可以复制粘贴 关键帧的插值曲线 改成线性插值,右键打开选项,Both Tangents选择Linear 采样率(Samples):调节动画快慢,调小变慢 添加事件: 1.事件必须和Animation同级 2.选中游戏物体来编辑事件,不可以对动画片段编辑事件 3.事件会自动加载给资源里…
委托:比较什么时候用委托好   下课案例:不用下课铃 1.ClassManager需要拿到所有教室的引用,课堂管理者应该只负责计时并告知每间教室 2.每间教室应该是由当班老师负责是否需要下课,而课堂管理者应该负责告知时间到,并不应该强制执行下课方法 3.每间教室的类可能不是同一个程序员写的,下课方法也不一定一样,比如有100间教室,每间教室下课方法都不一样   使用下课铃(广播)的好处: 1.ClassManager并不需要知道每间教室的地址 2.只负责告知每间教室时间到了,并没有强制要求下课,…
Project(工程.项目):工程是把游戏开发当前所需要的资源归类管理用的. Console控制台:日志.报错.调试,右上角,消息过滤 Assets:资源,存储游戏中一切用到的资源 Library:临时库文件 ProjectSettings:项目设置.项目控制 Temp:临时文件夹 UnityPackageManager:资源包 工程迁移: Assets.ProjectSettings.UnityPackageManager,这三个文件夹必须拷贝走 如果报错,先删掉Library和Temp,再重…
Unity3D简介一.什么是Unity.U3D?全面整合的专业引擎 二.这个软件能做什么?1.内容:3D2D游戏,教育,建筑,网页,VRAR,家庭娱乐系统2.媒体:PC平台,主机,移动,VR 1.UE4(EPIC公司):优点:渲染效果出色,画面逼真:缺点:学习门槛高,自己封装的C++,蓝图只针对设计人员:代表作品:虚幻争霸. 2.CryEngine(Crytek公司):优点:光影效果出色,最强悍的音频工具,人工智能:缺点:公司自用,教程少,C++;代表作品:怪物猎人. 3.寒霜3(EA PICE…
原文地址:http://bbs.9ria.com/thread-186942-1-1.html 作者:江湖风云 六年前第一次接触<魔兽世界>的时候,被其绚丽的画面所折服,一个叫做贫瘠之地的地方,深深印在我的脑海里.当时在艾泽拉斯大陆还不能使用飞行坐骑,试想一下孤身一人在银色的月光下赶路,可能还有你的战斗小伙伴,静谧的夜晚,皎洁的月光,一起走过了六年……即便是现在回想起来,浮现在脑海中的不是T123456S123456,而是十字路口的夜空. 回到正题,在Unity中要创建这样的效果并不困难,用专…
在Unity3D中没有提供直接的方法获取某个GameObject的子GameObject,但是所有的GameObject都有transform对象,所以,一般是通过获取子GameObject的transform来达到遍历子GameObject的目的.官网手册中“Transform”页面给出了如下示例代码: using UnityEngine; using System.Collections; public class example : MonoBehaviour { void Example…
制作小地图首先需要两个贴图:第一个贴图是小地图的背景贴图,它应当是从y轴向下俯视截取的贴图:第二个贴图是主角位置贴图,它应当是在背景贴图之上的小型矩形. 1 using UnityEngine; 2 using System.Collections; 3 4 public class smallMap : MonoBehaviour { 5 // Use this for initialization 6 GameObject plane; //大地图地形对象 7 GameObject cube…
Mass Mass of the rigidbody. Linear Drag Drag coefficient affecting positional movement. Angular Drag Drag coefficient affecting rotational movement. Gravity Scale Degree to which the object is affected by gravity. Fixed Angle Can the rigidbody rotate…
GUI控件:1.在Start中初始化,在OnGUI中调整.2.公有变量才会出现在Inspector面板.3.GUI控件的初始化和处理在OnGUI内完成.4.JavaScript的中文为UTF-8编码可显示,CSharp的中文为UTF-16编码可显示.基本信息:屏幕宽高:Screen.width Screen.height图片宽高:img.width img.height一 标签LabelGUI.Label(Rect(x,y,width,height),<Str or Texture, such…
两大框架图解 Collection接口 由第一张图,我们可以知道,Collection接口的子接口有三种,分别是List接口,Set接口和Queue接口 List接口 允许有重复的元素,元素按照添加的顺序进行排序 接口方法 void add(int index,Objext o) 在集合的指定位置插入元素 Object get(int index) 返回集合中某个指定位置的元素 int indexOf(Object o) 返回第一次出现该元素的索引(下标),如果不包含此元素,返回-1 int l…
光照模型:用数学的方法模拟现实世界中的光照效果.   场景中模型身上的光反射到相机中的光线: 1.漫反射:产生明暗效果 2.高光反射:产生镜面反射,物体中有最亮且比较耀眼的一部分 3.自发光: 4.环境光:   漫反射 光线被粗糙的表面无规则的向各个方向反射的现象. 漫反射的计算公式(兰伯特光照模型)模拟漫反射 漫反射光 = 光照颜色和强度 * 漫反射颜色 * max(0, dot(法线方向,  光照方向)) 光照颜色和强度:Unity引擎提供的,CGIncludes/UnityLighting…
Alpha测试 AlphaTest Great:大于 AlphaTest Less:小于 AlphaTest Equal:等于 AlphaTest GEqual:大于等于 AlphaTest LEqual:小于等于 AlphaTest Never:全不渲染 AlphaTest Always:全部渲染 如果使用后两项的命名的情况下,比较后的数字项没有意义   AlphaTest 比较项 数字 AlphaTest Great 0.5 //表示只渲染alpha值大于0.5的部分 AlphaTest L…
一.GPU:图形处理器,Graphics Processing Unit 显卡的处理器就是图形处理器.与CPU类似.   GPU和CPU的区别? 1.CPU主要是为了串行指令设计,GPU则是为了大规模的秉性的计算而设计. 2.从并行的角度来看,CPU并行针对于指令集并行,而GPU的并行是针对大规模运算的. 3.同样面积的芯片:CPU上更多的放置缓存和控制部件,而GPU上放置的是更多的运算单元.   二.渲染管线 渲染管线也叫渲染流水线,就是告诉GPU一堆数据,然后得到一个二维的图像. 渲染管线主…