unity dialogSystem
新建ui-panel对象render mode - worldspacereset canvas让ui界面移到地图中间。
event camera 决定哪个摄像机进行渲染更改sortinglayer Scale location 让其达到自己想要的效果更改图片
加入text与image
加入触发脚本到对象上,这里举几个常用函数:OnTriggerEnter2D()OnTriggerExit2D() 这两个函数需要在对象拥有Trigger Collision的情况下才有效。用途是在进入碰撞体时触发函数。
gameObject.SetActive(bool var) 用来控制对象的激活状态。gameObject.ActiveSelf 用来获取对象激活状态的布尔值。
DialogSystem[header(“TEXT”)] 这个方法可以用来在Inspector中建立可视化的头文字,可以用来注释public变量。
TextAsset 这一类型可以把Text文件使用到游戏项目当中,并且帮助转换其中的文本。(txt, html, xml等,不支持mobi, pdf等)用一个方法.Text可以把整个 ...
用unity做一个2D-roguelike
1.使用类继承的方式使玩家和敌人拥有相同的移动方式;
2.对象的单例模式
3.可序列化 serializable
4.利用数组和random函数,随机生成地图
5.虚函数
在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数,用法格式为:virtual 函数返回类型 函数名(参数表) {函数体};实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数。
6.抽象类
抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。通常在编程语句中用 abstract 修饰的类是抽象类。在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。抽象类是不完整的,它只能用作基类。在面向对象方法中,抽象类主要用来进行类型隐藏和充当全局变量的角色。
7.protected保护类型前缀
8.float.Epsilon代表近似于0的数
9.MoveTowards函数Vector3 newPosition = Vector3.MoveTowa ...
unity与脚本-4
Properties编码时经常会有在外部访问类内部变量的需求,可以把这个变量设置为公共的,然后直接访问他。其实还有更好的方法,就是利用属性,属性本身类似变量,在内部封装了一些变量,被封装的变量称为域,而封装可以更好的控制域被访问的过程。创建属性:先确定访问控制符,然后是类型,通常把属性命名为跟域相同,但是首字母大写,在属性名后面是大括号。像函数一样,在括号内是属性的访问器。一个属性有get和set两种访问器,分别在取值和赋值时调用。在get里返回被封装的域,在set访问器里使用value关键字对域赋值。
用属性可以达成两件变量无法做到的事。首先,不实现get或set的一个,就可以做出一个只读或只写的域。如果域是私有的,那么没有get和set访问器,就无法读取或写入它。第二点是访问器就像函数一样,意味着你可以在里面调用其它的函数。
属性的另外一个特点是他们可以自动生成,自动生成属性使用简写写法。在get和set访问器直接打上分号。
三目运算符和C++差不多。
Static静态成员,如某些变量和方法,会在类的所有实例中共享。静态成员可以通过类直接访问。不需要先实例化一个对象出来,通常成员变 ...
unity与GUI
1.canvascanvas是用来控制一组UI元素渲染方式的组件。所有的UI元素必须是canvas的子节点。场景中可以创建多个canvas。
每个canvas都有几种不同的渲染模式。渲染模式可以在RenderMode菜单里选择。
scene Space - Overlay canvas会直接驱动Rect Transform组件的设置。Ui会覆盖整个屏幕。所有的Ui元素会绘制在场景中其他元素的前面。在屏幕设置变化时会自动调整大小。所以canvas上的Rect Transform不能手动编辑。canvas会设置所有的Rect Transform参数来自动填充整个屏幕。
选中Pixel Perfect时,Ui元素会在渲染时自动调整到最接近的像素。在某些情况下可能达到锐化外观的效果。
Screen Space - Camera 和 Screen Space - Overlay类似。但是它是被场景中某个指定的camera来渲染的。这使得screen space UI可以应用一些camera独有的设置。最常见用法是使用一个透视摄像头来使UI有一定深度感。在此模式下,canvas会自动填充摄像头的视 ...
用unity做一个flabby bird
–通过移动世界而不是移动角色来模拟endless的效果。 –在摄像机外回收并循环资源,节约性能。 –障碍通过脚本对象池实现,性能更好。
1.GetMouseButtonDown()button values are 0 for left button,1 for right button,2 for middle button.
2.OnCollisionEnter2D ()如果附加了此脚本的游戏对象,与其它东西发生碰撞,则会调用此函数。
3.SetTrigger(“nameOfTrigger”,)可以传入我们想要设置的触发器(多用于动画触发)
4.SetActive(ture or false)可以触发或关闭组件。
5.重新加载场景。using UnityEngine.SceneManagement;空间声明。 void Update() { if (GameOver == true && Input.GetMouseButtonDown(0)) { S ...
unity与脚本-3
GetComponent函数在Unity中,脚本可视为自定义的组件,你会经常需要获取在同一个甚至其他对象上的脚本。通过GetComponent可以获取到其他的脚本和组件。GetComponent();GetComponent函数的调用方式与我们之前见到的不同,我们在小括号前添加一组尖括号,这组尖括号用来输入一个类型作为参数。
也可以用GetComponent提取其它游戏对象上的组件,只要我们有对这个对象的引用,像OtherGameObject。
GetComponent 会返回一个任意指定类型的,在所调用游戏对象上的组件。在GetComponent常用于获取其他脚本的同时,它也可以用来获取到没有被API暴露出来的组件。GetComponent是比较耗费处理能力的,应该尽可能少的调用。较好的用法是在Awake或Start函数中使用,或只在第一次需要时调用一次。
DeltaTime变量Delta这个术语意思是两个值的差别。Time类的deltaTime属性本质是两次update或者fixedupdate的间隔。这可以用来平滑运动过程中使用的数值,以及其它增量的计算。
帧间的时间间隔是不定的 ...
Unity与脚本-2
向量计算在unity中,会用到向量的知识,包括2d向量和3d向量。简单说一下3d向量:unity中z代表深度,y代表高度,x代表长短。(笛卡尔坐标系)。3d向量的大小计算方式和2d相同 x2+y2+z2=m2。unity提供了简化这种计算的帮助函数。Vector3.magnitude(Vector3代表3d向量,Vector2代表2d向量)具体使用方法可以查阅文档。3d向量还有很多有用的函数,比如点乘积(Dot Product)和叉乘积(Cross Product)。
点乘积输入两个向量,产生一个标量,即为一个单纯的数字。要计算2个向量的点乘积,将他们的组成分解,得到xyz的值,然后分别乘在一起,并且计算出他们乘积的和。(AxBx)+(Ayby)+(Az*Bz) = Dot Product用这个方法可以计算出向量之间的一些关系,比如算出两个向量是否相互垂直,可以用这种方法制作一个飞行模拟器。帮助函数:Vector3.Dot(VectorA,VectorB)
叉乘积是另外一种组合两个向量的方式,产生的结果不是标量,叉乘积的结果是另外一个向量,这个新的向量与原来的两个向 ...
unity与脚本语言与C#初入门
warning–这是很个人化的unity脚本笔记,由于本人有过编程经验(虽然也很渣就是),所以对于我来说比较基础的或了解过的东西在这里不会细讲,详情可以去官方文档搜索更加详细的脚本教程。
理解unity脚本在unity中,脚本应该被视为一种行为组件。与unity的其它组成相同,他们也可以添加到游戏对象上。可以为游戏对象添加更多的行为模式。可以在项目栏创建脚本,并且把脚本拖到游戏对象上。也可以到“添加组件”里,添加在你项目栏存在的游戏脚本。也可以到组件-script 添加你想要的脚本。unity的脚本支持 Javascript,C#,Boo(Boo是python的衍生,很少用)编写。
变量与函数C#声明变量和函数的方式,和C++类似。变量: type nameOfVariable = value;可以对变量进行各种赋值,运算的操作。start函数,在脚本依附的对象进入场景时调用,可以通过Debug.Log()来获取变量值,如果我们想看到这个值,可以在unity 播放模式下的控制台中看到(前提是你的脚本放在了游戏对象中)。函数:typeOfReturn nameOfFunctio ...
unity-2d角色控制器
有关2d的移动控制1.直接修改transform–transform.translate –按输入vector3的方向和大小移动,可以选择输入参照的坐标系。
–vector3 –vector3.lerp -在两点间计算线性插值,可以用结果修改position,直线移动 –vector3.slerp -在两点间计算球形插值,用结果修改position,弧线移动 –vector3.movetowards -输入两点,及限制最大距离,返回一个不超过最大距离的点,直接移动。 –vector3.SmoothDamp -平滑的从A点逐渐移动到B点,可以设置移动总时间,最大速度,常见的用法是相机跟随目标。
2.修改rigidbody–velocity -速度–AddForce -施加力–MovePosition -移动位置–使用时应该在fixedUpdate,因为是按照物理引擎更新进度更新的,UpdatehefixedUpdate不是一个节奏,而且需要注意描述里写的条件和影响结果。
3.CharacterController并不适用于2D
地面检测建立空对象,放在游戏对象下,提供游戏对象与地面接触的 ...