1、Monobehaviour类
Unity中的脚本都是继承Monobehaviour,定义了脚本的基本行为。必然是继承.
我们之前所熟知的声明周期函数。
除了必然事件,还定义了对各种特定事件的相应函数,均已On开头
MonoBehaviour中的事件响应函数都是已On开头的,比如:鼠标事件,脚本激活、销毁,碰撞等。
-
OnApplicationFocus:当玩家获得或失去焦点时发送给所有游戏物体。可以作为协同程序,在函数中使用yield语句即可
-
OnApplicationPause:当玩家暂停时发送到所有的游戏物体。可以作为协同程序,在函数中使用yield语句即可。
-
OnApplicationQuit:在应用退出之前发送给所有的游戏物体。当用户停止运行模式时在编辑器中调用。当web被关闭时在网络播放器中被调用。
-
OnBecameInvisible:当renderer(渲染器)在任何相机上都不可见时调用OnBecameInvisible。
-
OnBecameVisible:当renderer(渲染器)在任何相机上可见时调用OnBecameVisible。
-
OnCollisionEnter:当此collider/rigidbody与另一个rigidbody/collider接触时调用。
-
OnCollisionExit:当此collider/rigidbody停止触发另一个rigidbody/collider时。
-
OnCollisionStay:当此collider/rigidbody触发另一个rigidbody/collider时,OnCollisionStay将会在每一帧被调用。
-
OnConnectedToServer:当你成功连接到服务器时,在客户端调用。
-
OnDisconnectedFromServer:失去连接或从服务器端断开时在客户端调用。
-
OnFailedToConnectToMasterServer:当连接主服务器出现问题时在客户端或服务器端调用。
-
OnControllerColliderHit:在移动的时,当controller碰撞到collider时OnControllerColliderHit被调用。
-
OnDestroy:脚本销毁时调用。
-
OnDisable:对象禁用或者取消激活时调用。
-
OnEnable:对象变为可用或激活状态时此函数被调用。
-
OnDrawGizmosSelected:如果想在物体被选中时绘制gizmos,执行这个函数。
-
OnGUI:渲染和处理GUI事件时调用。
-
OnJointBreak:当附在同一对象上的关节被断开时调用。
-
OnLevelWasLoaded:一个新关卡被载入时此函数被调用。
-
OnMouseEnter : 鼠标移入GUI控件或者碰撞体时调用
-
OnMouseOver : 鼠标停留在 GUI控件或者碰撞体时调用
-
OnMouseExit : 鼠标离开 GUI控件或者碰撞体时调用
-
OnMouseDown :鼠标离开 GUI控件或者碰撞体上按下时调用
-
OnMouseUp :鼠标按键释放时调用
-
OnMouseDrag : 当鼠标拖拽的时候调用
-
OnMouseUpAsButton:只有当鼠标在同一个GUIElement或Collider按下,在释放时调用。
-
OnTriggerEnter:当Collider(碰撞体)进入trigger(触发器)时调用OnTriggerEnter。
-
OnTriggerExit:当Collider(碰撞体)停止触发trigger(触发器)时调用OnTriggerExit。
-
OnTriggerStay:当碰撞体接触触发器时,OnTriggerStay将在每一帧被调用。
void OnMouseDown()
{
Debug.Log("当按下鼠标的时候调用");
}
void OnMouseUp()
{
Debug.Log("当抬起鼠标的时候调用");
}
void OnMouseOver()
{
Debug.Log("当一直点击不松开鼠标会一直调用");
}
void OnMouseDrag()
{
Debug.Log("当按下鼠标并且拖动的时候调用");
}
void OnMouseEnter()
{
Debug.Log("鼠标进入游戏对象的时候调用");
}
void OnMouseExit()
{
Debug.Log("鼠标离开游戏对象的时候调用");
}
void OnMouseUpAsButton()
{
Debug.Log("当按下鼠标并抬起的时候调用");
}
文本框
GUILayout.TextArea
按钮
GUILayout.Button
标签
GUILayout.Label
滑动条
GUILayout.HorizontalSlider
小案例(获取屏幕坐标的鼠标位置)
private string mouse;
void Update()
{
Vector3 v3 = Input.mousePosition;
mouse = v3.ToString();
}
void OnGUI()
{
GUILayout.TextArea(mouse);
}
2、基础函数
创建脚本就默认的update、start方法:(这些官方的文档都是有的)
-
Start:Update函数第一次运行前调用,一般用于游戏对象的初始化。比如GetComPonent之类。
-
Update:每帧调用;一般用于更新场景和状态,物理相关不建议在此处处理。
-
Awake:脚本实例对象被创建时调用,也可以用于游戏对象的初始化,但是Awake是在所有脚本的Start之前执行。
-
FixedUpdate:固定间隔执行,一般用于物理状态更新。
-
LateUpdate:每帧执行,在Update之后。一般和摄像机有关的状态放在这里处理。
3、默认组件
组件对应的变量名是组件名的小写。
- Transform:对象的位置,角度,缩放。变量名:transform
- Rigidbody:刚体属性。
- Render:渲染物体模型。
- Light:灯光属性。
- Camera:相机属性。
- Collider:碰撞体属性。
- Animation:动画属性。
-
Audio:声音属性。
4、组件获取函数
获取组件的方法由于比较耗时,所以如果你在update修改transform的话,一般可以先在Start中获取这个组件的引用,然后在update中使用引用去修改。
比如获取上面例子cube1的script1脚本:
Script1 spt1 = GetComponent<Script1>( );
下面是获取组件的函数:
- GetComponent:获取组件。
- GetComponents:获取组件列表。
GetComponentInChildren:返回Type类型组件,在GameObject或它的任何子物体使用深度优先搜索,仅返回激活的组件。
GetComponentsInChildren:在GameObject或任何它的子物体,返回全部Type类型组件。
5、获取场景中的游戏对象
同样和获取组件一样,该方法比较费时,一般在Start中获取引用。
GameObject cube1 = GameObject.Find("Cube1");
GameObject cube1 = GameObject.FindWithTag("tag_cube1");
除了上面的方法,也可以使用public对象,直接使用面板拖拽赋值。文章来源:https://www.toymoban.com/news/detail-660260.html
本文仅供学习使用
本文部分参考:https://www.jianshu.com/p/87586839a55f文章来源地址https://www.toymoban.com/news/detail-660260.html
到了这里,关于Unity中的C#脚本都继承了Monobehaviour类(Monobehaviour类的分析)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!