5.事件响应函数(二)
1、OnRenderObject
该函数可以用来渲染你自己的物体,用Graphics.DrawMesh或者其他函数。这个函数类似于OnPostRender,除非OnRenderObject被其他物体用脚本函数调用,否则它是否附于相机都没有关系。
public Mesh mainMesh; public Mesh miniMapMesh; void OnRenderObject() { if (Camera.current.name == "miniMapMesh") Graphics.DrawMeshNow(miniMapMesh, transform.position, transform.rotation); else Graphics.DrawMeshNow(mainMesh, transform.position, transform.rotation); }
2、OnWillRenderObject
如果对象是可见的,则每个摄像机都会调用他
public Renderer rend; void Start() { rend = GetComponent<Renderer>(); } void OnWillRenderObject() { if (Camera.current.name == "MiniMapcam") rend.material.color = Color.red; else rend.material.color = Color.yellow; }
3、OnGUI
渲染和处理GUI事件时调用。
void OnGUI() { if (GUI.Button(new Rect(10, 10, 150, 100), "I am a button")) print("你点击了这个按钮"); }
4、OnRenderImage
当完成所有渲染图片后被调用,用来渲染图片后期效果。
public Material mat; void OnRenderImage(RenderTexture src,RenderTexture dest) { //复制纹理给目标,应用到材质 Graphics.Blit(src, dest, mat); }
5、OnDrawGizmosSelected
物体被选中时调用绘制gizmos(画一个半球)
public float explosionRadius = 5.0f; void OnDrawGizmosSelected() { // 选中时显示爆炸半径 Gizmos.color = new Color(1, 1, 0, 0.75F); Gizmos.DrawSphere(transform.position, explosionRadius); }
6、OnDrawGizmos
和OnDrawGizmosSelected的区别是,脚本赋给谁则OnDrawGizmos在哪个物体上绘制,无法选择其他对象绘制
public float explosionRadius = 5.0f; void OnDrawGizmos() { // 选中时显示爆炸半径 Gizmos.color = Color.red; Gizmos.DrawSphere(transform.position, explosionRadius); }
7、OnApplicationPause
当游戏暂停的时候发送给所有的游戏对象
bool isPaused = false; void OnGUI() { if (isPaused) GUI.Label(new Rect(100, 100, 100, 30), "Game Paused"); } //当玩家获得或失去焦点时 void OnApplicationFocus(bool hasFocus) { isPaused = !hasFocus; } void OnApplicationPause(bool pauseStatus) { isPaused = pauseStatus; }
8、OnApplicationFocus
当玩家获得或失去焦点时发送给所有的游戏对象
9、OnApplicationQuit
在应用退出之前发送给所有的游戏物体。当用户停止运行模式时在编辑器中调用。当web被关闭时在网络播放器中被调用。
void OnApplicationQuit() { Debug.Log("Application ending after" + Time.deltaTime + "seconds"); }
10、OnPlayerConnected
当一个新玩家成功连接时在服务器上被调用。
private int playerCount = 0; void OnPlayerConnected(NetworkPlayer player) { Debug.Log("Player" + playerCount + "Connected from" + player.ipAddress + ":" + player.port); }