Mesh的设置
API使用Mesh的话会把原来的Mesh复制一份新的再赋值过去,而使用SharedMesh则会直接把原来的Mesh赋值过去
Mesh的设置
API使用Mesh的话会把原来的Mesh复制一份新的再赋值过去,而使用SharedMesh则会直接把原来的Mesh赋值过去
角色控制器
CharacterController
可用API:
SimpleMove(简单的控制角色的移动,只需要传递一个向量即可)
isGrounded(输出是否在地面上的一个变量)
Move(类似于SimpleMove,会根据向量长度来移动)
代码段分析:
Ray ray=camera.ScreenPointToRay(Input.mousePosition);
Debug.DrawRay(ray.origin,ray.direction);
创建了一个关于鼠标位置的射线,并在控制台输出射线的方向和位置
Debug.DrawLine(ray.origin,ray.origin+ray.direction*100);
可以增长射线的显示长度
RaycastHit hit;
bool isCollider =Physics.Raycast(ray,out hit);
Debug.Log(hit.collider);
创建一个射线碰撞变量hit,bool变量接收结果,控制台显示碰撞的物体碰撞器
对象和组件有很多相同的属性和方法,又有不同的部分
new waitForSeconds(xs);
暂停几秒
协程方法
如果调用的是协程方法,那么调用之后不会等调用的方法结束再执行;
协程方法的返回值是IEnumerator
返回参数的时候使用yield return;
协程方法的调用
StartCoroutine(method())
MonoBehaviour
invoke
GameObject
静态查找方法
1.通过查找名字
GameObject go=GameObject.Find("Main Camera")//通过查找名字
2.通过标签
GameObject []gos=GameObject.FindGameObjectsWithTag
课15游戏物体的接受与发送
1.BroadcastMessage
Public GameObject target;
target.BroadcastMessage("Attack",null,SendMessageOption.DontRequirReceiver);//广播发送消息,不用接收者。
2.SendMessage
GameObject
静态查找方法
1.通过查找名字
GameObject go=GameObject.Find("Main Camera")//通过查找名字
2.通过标签
GameObject []gos=GameObject.FindGameObjectsWithTag
课12场景、游戏物体、组件
一个游戏由多个场景,一个场景由多个游戏物体组成,一个游戏物体由多个组件组成。
课13
一般来是A场景切换B物体,A场景里东西一般会被销毁;
查找组件类型
Transform[]= FindObjectsType<Transform>();
foreach(Transform t in ts)
{
Debug.Log(t);
}
课12场景、游戏物体、组件
一个游戏由多个场景,一个场景由多个游戏物体组成,一个游戏物体由多个组件组成。
unity engine----objet
unity manual是一个手册
scripting reference
Camera:
Field of View:Camera前方的视野的角度
Near:相机到开始的最近视野的距离,即最近需要这个距离才能被看到
Far:相机能看到的最远的距离,即最远到这个距离前的场景可以看到
Projection: Perspective(透视模式,一般在3D游戏中采用)
Orthographic(正交模式,一般在2D游戏中采用,Camera的视野是方形笔直的,看到的物体实际多大,视野就多大)
Clear Flags:背景的设置(包括天空盒子,单一色调背景、不设置背景、不清除重影)
代码段分析:
if(Input.touches.Length >0)
{
Touch touch1 = Input.touches[0];
//touch1.position 手指的位置
TouchPhase phase =touch1.phase;
//当前手指的状态
注意关于数组为空的情况,所以需要一个if的判断条件来保证数组非空
推荐:EasyTouch 插件非常好用
www的使用
http://和https://、file://、ftp://四种协议可供支持
步骤:copy在Unity Manual上关于www的操作代码,在百度上找到图片复制地址,代替代码段,在Unity内部移动脚本到物体上,即可实现效果
IBeginDragHandler:开始拖拽
IDragHandler:拖拽过程中
IEndDragHandler:结束拖拽
IDropHandler:在控件内拖拽后放下触发
代码段分析:
using UnityEngine.EventSystems;
需要加上事件系统,才可以实现接口的注册
接口会出现一个灯泡的下拉框
可以点击里面的实现接口
OnPointerDown:当鼠标按下的时候才会触发
OnPointerUp:当鼠标抬起的时候才会触发
OnPointerClick:当完成鼠标按下和抬起整个过程才会触发
OnPointerEnter:当鼠标移入的时候才会触发
OnPointerExit:当鼠标移出的时候才会触发
限制:
1.放在哪个脚本身上,就只能监听哪个脚本的事件
2.确保Raycast Target处于勾选状态
代码段分析:
通过代码添加形式来进行监听事件
using UnityEngine.UI;
btnGameObject.GetComponent<Button>().onclick.AddListener(this.ButtonOnClick);
在Button进行点击的时候可以触发ButtonOnclick方法,调用里面的内容
sliderGameObject.GetComponent<Slider>().onValueChanged.AddListener(this.OnSliderChanged);
void OnSliderChanged(float value)
{
}
监听时需要参数value类型的
如果是Int32类型的需要引用命名空间,即using System;