29784人加入学习
(126人评价)
Unity API常用方法和类详细讲解(基于Unity5.6)
价格 免费
承诺服务

OnMouseUpAsButton是MouseDown和MouseUp的时候都要在这个物体上

[展开全文]

跟鼠标相关事件函数OnMouseXXX讲解

鼠标的基本操作函数:

public class MouseCS : MonoBehaviour {
    void OnMouseDown()//鼠标按下执行一次
    {
        print("Down");
    }
    void OnMouseUp()//鼠标抬起执行一次
    {
        print("Up");
    }
    void OnMouseDrag()//鼠标在物体上按住拖动一直执行
    {
        print("Drag");
    }


    void OnMouseEnter()//鼠标移到物体上执行一次
    {
        print("Enter");
    }
    void OnMouseExit()//鼠标移除物体执行一次
    {
        print("Exit");
    }
    void OnMouseOver()//鼠标在物体上一直执行
    {
        print("Over");
    }
    void OnMouseUpAsButton()//在同一物体,按下并抬起鼠标,会触发一次,在不同物体间进行一次按下抬起动作不会触发
    {
        print("Button"+gameObject);
    }
}

 

[展开全文]

事件要附在游戏物体上才能监测它

[展开全文]

如果想用Onmousexxx()必须要在附加该脚本的游戏物体身上添加collider

如果碰撞器为Trigger则保证Edit pysics中设为true

OnMouseDown()鼠标 按下

OnMouseUp()鼠标抬起

OnMouseDrag()按下没有抬起,即拖拽

OnMouseEnter()鼠标移到物体上时触发

OnMouseOver()鼠标呆在物体上时

OnMouseExit()鼠标从物体身上移开

OnMouseUpAsButton()可以用来检测单击某物体

[展开全文]

mouse相关Api

//点击任何物体都有效果

onMouseDown 在鼠标按下时调用

OnMouseUP 当鼠标抬起时

onMouseDrag 当鼠标拖拽时

OnMouseEnter 当进入鼠标移动在某个物体上时

OnMouseExit  当鼠标退出物体时

OnMouseOver 当鼠标在物体上时

 

 

点击挂此脚本的物体才有效

 

使用条件

1鼠标点击物体必须有coll组件 并且勾选了Tigger

2在编辑菜单的phy中必须要勾Querise hit Trigger

[展开全文]

OnMouseDown 鼠标按下

OnMouseDrag 鼠标拖动

OnMouseUp 鼠标抬起

OnMouseEnter 鼠标刚放在物体上

OnMouseOver 鼠标一直放在物体上

OnMouseExit  鼠标离开物体

物体必须有collider。不一定。标记为trigger。

还有ProjectSetting/Physics/Queries hit Triggers 勾选上。(如果标记未trigger)

OnMouseUpAsButton 抬起的时候触发,条件是按下和抬起时都是同一个物体。如果按下时在一个物体,抬起时不在,就会失效。用来处理单击。

 

[展开全文]

StartCoroutine

StopCoroutine

IEnumerator

yield return waitForSeconds(3);

 

[展开全文]

Down 按下;

Up 抬起;

Drag 按下停留拖拽;

Enter 移上;

Exit 移出;

Over 停留;

UpAsButton 按下抬起时处于当前物体时触发;

[展开全文]

1.创建游戏物体f的三种方法
new GameObject();括号里可以添加想要创建的物体类型例如
new GameObject("Cube");创建出一个正方体
GameObject.Instantiate();
实例化Prefabs或实例化游戏物体
GameObject.CreatePrimitive();
创建原始图形如:.GameObject.CreatePrimitive(PrimitiveType.Cube);
2.通过代码给游戏物体添加组件
 private GameObject object;
object.AddComponent<Rigidbody>();
通过代码给游戏物体j添加脚本
object.AddComponent<脚本名>();
3.GameObject游戏物体的常用类
GameObject.activeInHierarchy 物体是否处于激活状态(包括自身及子物体)
4.UnityEngine下Object的静态方法
Object.Destroy:
Destroy(gameobject,time);
Object.DontDestroyOnLoad:
DontDestroyOnLoad(transform.gameObject);(在进行场景之间转换时不会被销毁,会被带到下一个场景中)
Object.FindObjectOfType:
Object   a =FindObjectOfType(typeof(组件名))
Rigidbody  a=FindObjectOfType<Rigidbody>();
只返回第一个被检测到含有此组件的物体。不查找未激活的游戏物体
Object.FindObjectsOfType:
Object   a =FindObjectsOfType(typeof(组件名))
Rigidbody a=FindObjectsOfType<Rigidbody>();
将检测到的所有的含有此组件的物体都存在数组中。不查找未激活的游戏物体
5.查找方法
Find(比较耗费性能)
FindGameObjectsWithTag返回所有是次标签的物体返回数组
FindWithTag只返回第一个检测到的物体。
6.游戏物体间消息的发送和接收
GameObject.BroadcastMessage();包括其自身及其子物体
GameObject.SendMessage(); 不包括子物体
GameObject.SendMessageUpwards();包括其自身及其父物体
7.得到组件的各种方法函数

GetComponent;只会得到在游戏物体身上的第一个检测到的组件

GetComponent;会得到物体上所有的组件

GetComponentInChildren;会得到其自身及其子物体身上第一个检测到的相应的组件

GetComponentInParent;会得到其自身及其父物体身上第一个检测到的相应的组件

GetComponentsInChildren;会得到其自身及其子物体身上所有检测到的相应的组件

GetComponentsInParent;会得到其自身及其父物体身上所有检测到的相应的组件

8.Public Functions

Invoke;

Public void Invoke(string methodName,float time );可延时调用方法

CancelInvoke;取消所有调用的方法(仅适用于当前脚本,不影响其他脚本中相同方法的调用)

InvokeRepeating;重复调用方法

IsInvoking;判断方法是否正在被调用

协程:

1.返回值是IEnumerator

2.返回参数时使用yield return null/0。

3协程方法的调用:使用StartCoroutine(需要调用的协程方法的名字);

4暂停yield return new WaitForSeconds(需要暂停的时间);

例如:

IEnumerator Method(){

内容;

yied return null;

}

StartCoroutine();开启协程

StopCoroutine();关闭协程

StopAllCoroutine();

9.与鼠标相关事件函数OnMouseXXX

OnMouseDown();当鼠标按下时触发

OnMouseUp();当鼠标抬起时触发

OnMouseDrag();当鼠标已经按下但没有抬起时触发

OnMouseEnter();当鼠标在游戏物体身上但没有按下鼠标时触发

ONMouseExit();当鼠标离开游戏物体时触发

OnMouseOver();当鼠标在游戏物体身上时无论是鼠标按下或没有按下只要鼠标在游戏物体身上就触发。

[展开全文]

授课教师

SiKi学院老师

课程特色

图文(1)
下载资料(2)
视频(71)