Unity笔记(4)自学第六天】的更多相关文章

今天主要是写了demo的策划案 [关卡设计部分]: [关卡数值设计]:…
主要是移动脚本和2个技能的脚本编写. 首先是移动的脚本: using System.Collections; using System.Collections.Generic; using UnityEngine; public class playerMove : MonoBehaviour { public float rotateSpeed = 1f; public float moveSpeed = 0.08f; public Texture aimImage; //大键盘wsad控制人…
学习记录: 脚本使用:…
学习记录: 界面使用: 脚本使用: 脚本注意点:…
学习记录: 界面使用:…
自学ST表笔记 说实话原先QBXT学的ST表忘的差不多了吧...... 我重新自学巩固一下(回忆一下) 顺便把原先一些思想来源的原博发上来 一.ST表简介 ST表,建表时间\(O(n\cdot logn)\),访问过程\(O(1)\) 的离线RMQ表. 思想标签:树性数据结构,倍增,预处理,离线. 然后这个建表最少需要\(S(n\cdot logn)\)的空间复杂度,然后如果需要预处理数字区间分块,另外需要一大批\(S(n)\)的空间. 听起来是不是很心动?(并没有 然后我们开始了解一下这个神奇…
Internal(Default):Unity内置,仅需Android SDK支持.不能导出工程,适用于仅适用Unity开发的工程. Gradle(New):使用Gradle进行构建,需要Android SDK与Gradle支持.可以导出Android Studio工程,选这个才能勾选下面的Export Project,适用于Unity与Android交互的项目. ADT(Legacy):使用ADT进行构建,需要Android SDK与ADT支持.可以导出Eclipse项目,现逐渐被弃用(Uni…
概念 静态碰撞体(Static Collider):物体勾选为静态Static,有Collider组件,无Rigidbody组件. 静态碰撞体的陷阱 Unity在游戏初始化时,会把所有的静态碰撞体合并为一个很大的Collider,Unity会认为这些物体在游戏中是不能移动的.但是若在游戏中不小心移动了这些静态碰撞体的位置(它们是可以被移动的),那么会导致一个严重的性能问题,所有那些与被移动的静态碰撞体合并到一起的其他静态碰撞体重新被计算. 所以在游戏中不要对静态碰撞体进行移动.禁用disable…
Unity的Terrain组件在[set the terrain height]分页下,height高度为0时,可理解为该地形的海平面高度,此时就不能地形下榻.把height调到100,点击[flatten],然后就能做地形下榻,深坑的深度最多即可达到100. 学习资料: http://www.maiziedu.com/course/540-7397/…
Mecanim动画系统是Unity独一无二.强大灵活的人物动画系统.该系统赋予您的人类和非人类人物令人难以置信的自然流畅的动作,使它们栩栩如生.游戏中角色设计提高到了新的层次,在处理人类动画角色中可以使用图形化方式来处理角色的各种动画 创建角色资源:建模.骨骼设置.蒙皮自动角色系统或角色产生软件:Poser.Makehuman.Mixamo 角色模型需要注意:1.角色模型有合理的拓扑结构,了解模型中的三角形,顶点等.2.建模过程中经常来进行测试输出,然后导入到Unity中与Unity标准的立方体…
Awake在MonoBehavior创建后就立刻调用,Start将在MonoBehavior创建后在该帧Update之前,在该Monobehavior.enabled == true的情况下执行. void Awake (){ //初始化函数,在游戏开始时系统自动调用.一般用来创建变量之类的东西. } void Start(){ //初始化函数,在所有Awake函数运行完之后(一般是这样,但不一定),在所有Update函数前系统自动条用.一般用来给变量赋值. } 我们通常书写的脚本,并不会定义[…
记录一些常见插件,随时补充. iTween动画插件 原理:插值法,给出初始值和终点值,自动算出中间值. DoTween Tween动画 Playmaker $45 Playmaker由第三方软件商Hutong Games开发完成.它的Logo是一个中文的“玩”字,独特.有创意. 既是一个可视化脚本工具,又是一个分层逻辑框架.设计师.程序员使用Playmaker能够很快地完成游戏原型制作,既适合独立开发者,又适用于团队协作.Playmaker能够大大提高开发效率,让你的游戏变得更加完美.注意:导入…
在使用unity3d的过程中,时常会需要从场景中寻找或者调用一个对象,而Unity就提供了一个贴心的功能——拖拽.用鼠标拖一下中比写堆代码直观的多吧!但是Unity提供的远远不止这一丢丢,下面我们来简单了解下UnityEditor部分的内容. 编辑器最最基本的用法呢就是编辑Inspector. 而Inspector中最最基本的就是把字段显示出来.给几个例子: [code]csharpcode: using UnityEngine; using System.Collections; // 这里没…
摄像机 Main Camera 跟随主角移动,不看 UI 剧情摄像机 当进入剧情时,可以关闭 main camera,启用剧情摄像机,不看 UI UI 摄像机 看 UI Unity编辑器常用的settings File->Build Settings File->Build Settings->Player Settings File->Build Settings->Player Settings->Other Settings Edit->Project Se…
第一部分:用户管理 创建用户:CREATE DATABASE XXX 查看用户:SHOW DATABASES; 关键查看用户:show databases like 'de.*'   讲解:创建一个用户就等于在物理目录下创建了一个文件,该文件是以.db结尾的,           默认的路径是:/user/hive/warehouse/zqx.db           创建用户时可以指定路径: create database XXX                               …
Block .数组高级 block本质上就是匿名函数(没有名称的函数) block语法和函数指针很相似 回顾函数 函数:C语⾔中,实现某一类功能的代码段. 完整的函数包含两部分:函数声明.函数定义 函数声明,即函数原型.例如:int sum(int x,int y);具有两个整型参 数,一个整型返回值的函数. 函数定义,即函数实现.例如:int sum(int x,int y){     retrun x + y;     } 回顾函数指针 函数指针(变量):存放函数地址(函数名)的指针变量.…
函数  function 命名规范:工程名第一个字母大写,变量函数名小写,不要用拼音和中文, eg:lessonFunction 一.函数声明定义 函数是具有特定功能的代码块        作用:模块化程序 用函数的好处:简化程序.提高开发效率.方便阅读和修改等 函数定义: 返回值类型  函数名(形式参数) { 语句 return 返回值: }     返回值类型:viod  int  char float.....    void下面可以不写return    ,int  下面返回值为整型,c…
1.使某个对象上的脚本失效和生效: GameObject.Find("xxx").transform.GetComponent<xxx>().enabled = false; //失效 GameObject.Find("xxx").transform.GetComponent<xxx>().enabled = true; //失效 2.NGUI相机震动效果: public float _shake_time = 0.5f; public vo…
在官方论坛看到一个关于怎么使物体漂浮在水面上的讨论:https://forum.unity3d.com/threads/floating-a-object-on-water.31671/ 水动力系统 插件: https://www.assetstore.unity3d.com/cn/#!/content/10382 另外关于船只移动产生的尾部水波纹,使用粒子特效,可以参考Bootcamp插件. 最简单最低成本的办法: 在Update中检测物体高度(y轴),大于水面高度就启用重力,否则禁用重力.…
需求:制作了一个提示框,当鼠标移入背包格子内,显示提示框,且提示框位置跟随鼠标移动.当鼠标移出背包格子,隐藏提示框. 制作提示框ToolTips 因为提示框的大小要求随着显示的文本内容长度而自动大小适应,所以用一个Text控件显示提示框的文本内容,并挂上Content Size Fitter组件. 因为提示框不仅只是一个Text文本,还需要有一个Image做背景,同时该Image的大小也能跟随文本内容长度自适应,所以最佳办法是: 如上图,一个Text作为父物体,下面是一个Image和Text作为…
需求:UGUI的Text文本框的内容会随着文本字数多少/换行而自动改变大小. 给Text加一个Content Size Filter组件(脚本),设置Horizontal Fit和Vertical Fit均为Preferred Size即可. 资料参考: https://docs.unity3d.com/Manual/HOWTO-UIFitContentSize.html http://www.taikr.com/course/444/task/8950/show 视频教程约3分钟处 其他相关的…
根骨骼动画:当动画中角色发生位移后,动作坐标原点跟随角色移动.例如一个向前跳跃的动画,如果在场景中重复该动画,能够看到角色一路往前跳跃,位置一直在前进.适用于有位移的放技能动作等. 非根骨骼动画:当动画中角色发生位移后,动作坐标原点始终保持在原地不变.例如一个向前跳跃的动画,如果在场景中重复该动画,能够看到角色往前跳跃后,完成一次该动画后角色的位置又会重置回去.适用于不能改变角色位置的动画,如闲置动作Idle. 如何切换: 如上图,当勾上那几个Bake Into Pose后,就成了非根骨骼动画,…
Navigation寻路导航界面下,Areas分页下是在给导航区域分类(相当于分层),以及为每个分类设置不同的消费Cost,意义在于,导航算法中会计算出的是累加起来消耗最低的路径(不一定是视觉上最短可行路径).例如,设置地面上有一滩沼泽,把该地形新建一个分类,并设置一个很高的消费,那么在正常情况下,寻路将会绕过该区域,走其他消费更低的路径.但若此时游戏中动态生成的物体阻挡了其他路径,只有该路径可走,那么角色将会穿过该沼泽地形进行导航. 所以该界面的作用在于,可为每种地形自定义分类,并可自定义其可…
通常情况下,静态的场景中,给场景物体静态标记中勾选Navigation Static后,在导航界面进行导航网格的烘培,可以得到一个静态的导航网格. 但是由于导航网格是静态烘焙好了的,游戏中动态生成的物体将不能阻挡导航网格的寻路,要想使这些动态生成的物体也能起到阻挡寻路的作用,需要给这些物体添加一个Nav Mesh Obstacle组件.该组建还要勾选上Carve属性,才能动态修改导航网格,不勾上的话物体被阻挡后,将停止正常的寻路,即导航被终止.另外该组件已有包围盒,不需要加上Collider组件…
通常情况下,Animator修改状态机,是在Animator定义参数(变量),状态之间建立切换的条件(箭头),然后代码中修改参数(变量),实现状态之间的切换. 而另一种情况下,不需要预先准备定义参数(变量),也不需要在状态之间简历切换的条件(箭头),可以在代码中直接进行状态的切换. API:https://docs.unity3d.com/ScriptReference/Animator.CrossFade.html 假设当前定义好了A和B两个状态,用代码实现切换: void Update()…
真正的手把手教程,太棒了: http://forum.china.unity3d.com/thread-17192-1-1.html 或者是使用插件NJG MiniMap: http://www.taikr.com/article/286 其他参考: http://wty530.blog.51cto.com/3238860/1762676 http://www.cnblogs.com/Sakya00/p/3239557.html…
屏幕坐标:左下角为原点. void Update(){ // 获取物体的屏幕坐标,世界坐标->屏幕坐标 Vector3 screenPos = Camera.main.WorldToScreenPoint(cube.position); Debug.Log("x = " + screenPos.x + ", y = " + screenPos.y + ", z = " + screenPos.z); } 拖动物体观察打印结果可知:z值是物体…
Tasks列表 -- Composites选项 Sequence:图标是“箭头”,相当于And逻辑.下接多个子任务,它们从左到右依次执行.所有子任务执行成功,则Sequence返回成功:任一子任务执行中,则Sequence返回执行中:任一子任务失败,其后边(后面)的子任务都不会再执行,Sequence返回失败.即多个顺序执行,否则失败.Sequence的打断Abort Type选项:该Sequence能打断谁. Lower Priority:能打断Sequence右边的任务. Self:能被自身…
using UnityEngine; using System.Collections; using UnityEngine.SceneManagement; using System; public class LoadingPage : MonoBehaviour { public UISlider progressBar; // 目标进度 ; // 读取场景的进度,取值范围0~1 ; // 异步对象 AsyncOperation op = null; void Start () { Deb…
一个最简单的协程,也至少需要2帧才能完成.第一帧走到yield return null停止,第二帧从此处接着执行完下面的操作.需求:如果缓存中存在某数据则直接使用,否则联网异步下载. private bool cached; // 该数据是否已有缓存 void Start(){ StartCoroutine(Download()); } IEnumerator WorkWhenDownload() { if(cached){ // 直接使用缓存 }else{ // 没有缓存,联网下载 WWW w…