unity

ogre的材质与unity的材质的相似性

∥☆過路亽.° 提交于 2020-03-02 13:13:37
最近研究了火炬之光的游戏资源,这款游戏采用ogre引擎,也就促使我研究了一下ogre的材质文件格式,发现和我经常使用的unity的材质格式有很多相似之处,因此分享出来给大家。 ogre的材质文档可以参考这里 http://www.ogre3d.org/docs/manual/manual_16.html , 而unity的shader文档参考这里 http://docs.unity3d.com/Manual/SL-Shader.html unity的shader语言分为3种,即shaderlab,类似于固定管线语法;cg shader,比较经典的shader语法,相当于对shaderlab的扩展可编程语法;以及surface shader,这个是另外一种系统,没有pass的概念,相当于 基于某种光照模型,然后调整光照模型的参数。 第三种语法不是很熟悉, 如果有了解这第三种模型渊源的朋友可以告诉我。 继续将ogre和unity的对比: 类似的两者的材质语言 都有固定管线和 可编程管线 语法。 其中unity中的shaderlab 标准语法和ogre 相比很类似,但是ogre比unity的shaderlab强大一些。 两者都有基本的Pass概念,基本语法形式都是在Pass中操作texture的混合方式,以及配置标准的光照参数。 ogre有一个 scroll anim的功能

unity从0开始摸鱼日记1-补充

泪湿孤枕 提交于 2020-03-02 10:21:16
没想到吧今天还是2月29 之前那篇主要是说明控制游戏中各个组件运动及状态,然后下面的主要是进行构建UI等,因此分开了 1.如何引入UI(以Text为例) 首先在unity中new UI 然后回到GameManager中,因为游戏中的一些数值组件等都放在这里面了 按照老方法,先创建出Text,然后在这里,在Awake()中创建一个初始化游戏的方法InitGame() 然后再这个方法中通过GameObject.Find("FoodText").GetComponent<Text>();找到text,并得到他的<Text>组件 private Text foodText; void Awake() { initGame(); } void initGame() { foodText = GameObject.Find("FoodText").GetComponent<Text>(); } 来源: CSDN 作者: Z3Djoker 链接: https://blog.csdn.net/Z3Djoker/article/details/104574215

[iOS、Unity、Android] 浅谈闭包的使用方法

自闭症网瘾萝莉.ら 提交于 2020-03-01 14:55:08
前言 我们经常所编程语言的的进步速度是落后于硬件的发展速度的。 但是最近几年,闭包语法在各个语言中都有自己的体现形式,例如   •  C语言中使用函数指针作为回调函数的入口;   •  Java和C#语言中的Lambda语法表达式;   •  Objective-C语言中的Blocks语法;   •  C#语言中的Delegates语法;   •  C++语言中的Functions对象; 历史 Peter J. Landin 在1964年将术语 闭包 定义为一种包含 环境成分 和 控制成分 的实体,用于在他的SECD 机器上对表达式求值。Joel Moses 认为是 Landin 发明了 闭包 这一术语,用来指代某些其开放绑定(自由变量)已经由其语法环境完成闭合(或者绑定)的 lambda 表达式,从而形成了 闭合的表达式 ,或称闭包。 使用方法 C++语言中的Functions对象 : C++11标准开始支持闭包,这是一种特殊的函数对象,由特殊的语言结构—— lambda表达式 自动构建。 C++闭包中保存了全部nonlocal变量的拷贝或引用。 如果是对外界环境中的对象的引用,且闭包执行时该外界环境的变量已经不存在(如在调用栈上已经unwinding),那么可导致undefined behavior,因为C++并不扩展这些被引用的外界环境的变量的生命期。 常见代码如下: //

unity中实现FSM有限状态机

不打扰是莪最后的温柔 提交于 2020-03-01 11:08:12
有限状态机(FSM)在游戏中的运用非常广泛. 使用它编程快速简单, 并且易于理解. #FSM由以下几个部分组成 内在的所有状态 输入条件 状态之间起到连接性作用的转换函数 #在Unity中使用FSM 通常实现一个FSM我们的写法一般是这样的. ##定义枚举定义的状态 public enum Hero_Enum { Wait, Move, Attack, Die } 这里我们定义一个主角, 它有4个状态分别是等待,移动,攻击,死亡四个状态. 声明一个局部变量表明当前所处的状态 private Hero_Enum currState; 定义状态转换函数 public void SetState (Hero_Enum newState) { currState = newState; switch (currState) { case Hero_Enum.Wait: WaitEnter(); break; case Hero_Enum.Move: MoveEnter(); break; case Hero_Enum.Attack: AttackEnter(); break; case Hero_Enum.Die: DieEnter(); break; } } 定义更新函数 在不同的状态下我们需要执行相对应的逻辑, 那写法如下: public void Update() { switch

Unity API常用方法和类详细讲解1

 ̄綄美尐妖づ 提交于 2020-03-01 03:46:29
Unity API常用方法和类详细讲解 005-Time类中静态变量介绍 FlexdUpdate 每秒(60)就60次。 OnTrigger触发器 OnCollision碰撞器 OnMouse XX输入事件 鼠标操作有关的事件 Scene Rendering场景渲染有关的 Delteime 延迟事件 deltatime每一帧的时间间隔 FrameCount帧数 RealtimeSinceStartup游戏开始到现在占用的时间 游戏运行一共占用时间: Time timeSincelevelLoad fixedTime realtimeSinceStartup暂停还会记时 timeScale时间比例 006-TimedeltaTime和realTimeSinceStartup的使用 乘以Time.deltatime.控制动画,运动相关。 TimeScale=0用于暂停游戏。 TimeScale=0.5可用于慢动作回放。 (deltatime一般都会乘TimeScale,TimesCALE默认1) Time.realtimeSinceStartUp可用于性能测试。 (time2-time1)即可 Time.deltatime指一帧的运行时间,根据电脑配置和代码运行效率这一帧的运行时间会发生变化。 Time.fixedDeltaTime指一帧的运行时间,这一帧的运行时间是固定的,默认是0

Unity APL(视频笔记36-53)

孤街醉人 提交于 2020-03-01 01:16:02
36二维向量Vector2中的静态方法 Vector2.LerpUnclampedAngle 取得夹角; Clamp Magnitude 限定长度;Distance 距离; Equals:判断两个向量是否相等 Normslize:自身单位化 Set:赋值 ToString:转变成字符串,可以进行一个格式化的输出 38关于三维向量Vector3 点乘: 根据公式: 就可以计向量a和向量b之间的夹角,从而就可以进一步判断这两个向量是否是同一方向,是否正交(也就是垂直)等方向关系,具体对应关系为: a·b>0 方向基本相同,夹角在0°到90°之间 a·b=0正交,相互垂直 a·b<0 方向基本相反,夹角在90°到180°之间 叉乘: 在三维几何中,向量a和向量b的叉乘结果是一个向量,更为熟知的叫法是法向量,该向量垂直于a和b向量构成的平面。若向量a=(a1,b1,c1),向量b=(a2,b2,c2), 则向量a·向量b=a1a2+b1b2+c1c2 向量a×向量b=| i j k||a1 b1 c1||a2 b2 c2|=(b1c2-b2c1,c1a2-a1c2,a1b2-a2b1) (i、j、k分别为空间中相互垂直的三条坐标轴的单位向量). 叉乘的意义就是通过两个向量来确定一个新的向量,该向量与前两个向量都垂直 40使用Random生成随机数 随机数:Random.Range(4,10

Laya3d 粒子注意事项

烂漫一生 提交于 2020-02-29 22:56:54
美术制作过程中一定要尽量减低粒子的数量,不要在unity中加入任何无用的空节点,这样会造成很大的性能开销; 注意unity中设置的参数laya3d是否支持,参照 https://ldc2.layabox.com/doc/?language=zh&nav=zh-ts-4-20-1 http://ask.layabox.com/question/1654 测试数据: |粒子数 |使用内存(M) |粒子占用内存(M)| |----|----|----|----| |0 |9.28 |0| |10 |9.29|0.01| |100| 9.34| 0.06| |1000| 9.88| 0.6| |10000| 15.2| 5.92| 来源: oschina 链接: https://my.oschina.net/17cto/blog/3179671

《Unity API常用方法和类详细讲解—Siki学院》课程学习笔记02

三世轮回 提交于 2020-02-29 19:52:50
《Unity API常用方法和类详细讲解—Siki学院》课程学习笔记02 课时10 GameObject、Component和Object的千丝万缕的关系 一个游戏由多个场景组成,一个场景由多个游戏物体(GameObject)组成,一个游戏物体由多个组件组成(Component); 组件:Transform, Rigidboy, MeshRender, MeshFilter, Collider, NavmeshAgent, Animation, Animator,自定义脚本(Script) 课时11-12 UnityEngine下Object的静态方法以及GameObject独有的静态方法 Destroy():可以销毁游戏物体和组件; DontDestroyOnLoad(gameobject):设置共享的游戏物体,重新调整场景时不会销毁; FindObjectOfType()根据类型获取组件; FindObjectsOfType()根据类型返回组件数组; GameObject.Find(“Main Camera”);根据名称获得主相机; GameObject.FindGameObjectsWithTag(“Main Camera”);根据标签获得主相机; 课时13 游戏物体间消息的发送和接收 (1)GameObject.BroadcastMessage(string

Google 登录接入之Unity

随声附和 提交于 2020-02-29 18:42:09
最近项目要接入Google的登录。说一下踩过的坑 第一次接入Google的登录sdk,网上搜索了半天。发现自己搜索错关键词了。我一直在网上搜索Google登录。结果一直搜索出来的文章全是Android的接入方法。 结果我从unity导出android工程后按照网上的方法接入。 结果发现是行不通的! 接下里介绍下专属于Unity接入的Google登录 Unity接入Google登录官网接入文档(不用翻墙也是可以打开的): https://github.com/playgameservices/play-games-plugin-for-unity 点击current-build后下载 GooglePlayGamesPlugin-0.9.39a.unitypackage 下载后的文件双击就可以导入unity工程了。 导入后如果碰到unity报错 Cannot find candidate artifact for com.android.support:support-v4:25.2.0 则需要打开SDK Manager下载 切换unity工程为android平台(File->Build Setting->Android->Switch platform) 加下来点击unity菜单中的Window->Google Play Games->Setup->Android setup...,

在Unity中使用Shader

荒凉一梦 提交于 2020-02-29 18:16:52
1、Material 和 Shader 的关系。一个材质包括一个 Shader 程序。在 Shader 中设置的属性能够通过 Material 可视化设置 2、内建 Shader, 在 5.0 之后的版本号中大部分旧的 Shader 都集成在了 Standard Shader 中了,能够通过设置 Standard Shader 的属性达到不同的须要的渲染效果。 Albedo: 反光率 Specular: 镜面反射 Smoothness: 镜面反射的光滑度 NormalMap: 法线贴图 为什么叫法线贴图。我们知道法线 (Normal) 是垂直于一个面的直线。通过计算光线与这条法线的角度就能够知道与面的角度。进而能够计算出面应得到的颜色值。如果我们知道物体每一个面的法线就能实现对这个物体进行光照渲染。可是一堵墙或许仅仅有四个顶点,也就是仅仅有一个面,它终于的渲染效果将会非常单一。如果这堵墙上有很多其它的砖的凹凸痕迹。我们增样实现仅用四个顶点渲染出立体感非常强,细节层次感非常强的这堵墙呢。 使使用方法线贴图。 在法线贴图技术中,我们就是通过把墙面的每一个像素的法线存储在一张纹理中,渲染的时候依据每一个像素的法线确定他们的阴暗程度,而这张法线贴图是能够用 photoshop 软件从一张墙的纹理生成相应的法线贴图的。到此,熟悉法线贴图的朋友会对以上内容非常熟悉的。 HeightMap: