unity中方法unity 重写image有什么作用

Unity3D使用经验总结 编辑器扩展篇
麒麟子(Alex)
发布时间: 10:30:22
一个引擎,最重要的就是工具,工具除了提升开发速度,提供可视化操作环境以外,还带了容错功能。 它使得大家的工作局限在一定的范围内,比如一个变量的配置,或者是一些类型的选择。 使用编辑器,使得既使不太明白的人,也能快速找到方法。如果是采用手工配置的话,那每一个东西需具备相当完善的文档,文件加载时,得提供高强度的错误效验和错误提示功能。 否则很容易陷入困境。
UNITY3D的IDE本身的强大,除了表现在其提供的强大功能外,更让人喜欢的,是它高度的可扩展特性。这也是一个项目开发中,必不可少的环节。&
关于编辑器扩展,网上也有很多资料提到了。并且,通过官方文档,也能很容易查阅到想要的内容。 这里只是作为一个整理,并不是教程。
在此顺便吐槽一下编辑器相关的官方文档。 可以说非常乱,并且也不齐全。 比如 文档中并没有区分哪些是命令,哪些是类。
比如Editor是一个类,而CustomEditor是一个内嵌命令。 在文档中并未体现。 有时候让人摸不着头脑,同时也没有地方可以全部了解到所有可用的内嵌命令。
BTW:新安装的系统没有安装BLOG工具,贴图不方便,所以文档中使用的图,都是网上找的。
先说说几个常用的命令吧。
CustomEditor
[CustomEditor(YouScript)] C#
@CustomEditor(YouScript) JS
这个是比较常用,用于对对象界面的扩展,比如一个对象的属性,可以像下面一样 注意damage和armor只是一个普通变量,而现在,我们可以让使用者使用拖动的方式来配置。 这样就限制了变量的范围。
ExecuteInEditMode
[ExecuteInEditMode]
@ExecuteInEditMode
这个功能可以说是相当霸气的。 想想这样一种情况,我们配置了一个怪物,这个怪物有攻击范围,侦测范围。 我们想要在编辑器中显示出来。 怎么办呢?
当然,我们通过CustomEditor命令和Editor类可以很容易地实现这个功能。 但是,有时候又觉得挺麻烦。 那ExecuteInEditMode就是解决这个问题的。
Unity3D在默认情况下,会执行处于Editor模式下的代码,而这个代码,是不会打包到发布后的程序中的。 而在其它地方的代码,只有挂接到对象上,且在PLAY模式下才执行。
但,如果加上了这个ExecuteInEditMode命令,一但你将对象放入场景,这段代码便会执行。 通常我们可以拿来做一些变量的显示。
但要记得,在脚本中,变量显示的代码记得用
#ifdef&UNITY_EDITOR
来封装一下,否则你游戏里面一样可以看到你的代码。
[MenuItem("MenuName")]
@MenuItem("MenuName")
这个就更不用说了,这个命令也是比较常用的。这个的功能很简单,就是向菜单栅添加一个菜单,执行一些操作。 比如,在程序开发过程中,我们想做点测试,点击一下,就触发一段代码。 我们可以像这样。
[MenuItem("Test")]
static OnTestMenuClick()
& &//do something you need.
可以说是相当方便&& MenuItem同样可以在游戏模式和Editor下使用。比如,我们弄了一个属性编辑器的窗口,想让这个窗口通过菜单弹出来。
那可以将下面代码加到属性窗口中
class&PropEditorWindow:EditorWindow
[MenuItem("Test/PropEditorWindow...")]
static PropEditorWindowClick()
  PropEditorWindow window = (PropEditorWindow) EditorWindow.GetWindow(typeof(PropEditorWindow));
AddComponentMenu
[AddComponentMenu("111/222")]
你自定义了一个脚本,并且这个脚本很常用,那你可以使用这个命令,把脚本加到Component菜单中,不用再在去Scripts堆里翻了
下面来说说相关的类
这个类,用于扩展一些编辑器全局的功能。 且这个类可以和目标对象作用 [CustomEditor(MyScript)].
在Editor类里,可以重写OnInspectorGUI(这个用得是比较多的)等方法。
EditorWindow
这个类,用于自定义一个窗口,你可以为窗口添加一些按钮,选项等。 比如,如果你想弄一个任务编辑器,用于配置一些数据。 那你不需要去研究MFC,C# FORM什么的了。 直接用UNITY3D的这个东西吧。&
它有一个OnSceneUI的事件可以监听,可以使你实现像自已的编辑器一样,在SCENE中点击某个物体后,在鼠标位置显示一个菜单,或者一些操作按钮。
另外,还有一个比较适用的事件是 OnHierarchyChange.当一个对象的父被改变,或者被新建的时候,这个事件会被触发。我们可以通过这个事件,对对象进行重新命名, 比如 ID_OBJECT的方式。 要不然,整个对象树中,同一个PREFAB的实例都是一样的,不利于编辑和管理。通过ID鉴别,在数据驱动的开发模式中,也更容易得到帮助。
EditorApplication
这个类提供了许多变量的访问,同时提供了Save等方法。 比如,你可以新建一个编辑器脚本,在它的UPDATE函数里,进行记事,以做定时保存。从而避免不必要的损失。
这个类还提供了新建场景,打开项目等操作。
如果你是在界面下使用UNITY3D,可能这个类的意义不大。 但如果你是基于U3D的命令行来构建一个一键式多平台发布方案。那这个类的地位就举足轻重了。 说到命令行,这个改天有空再和大家细说。 U3D是一个强大的工具,完全可以取代自主研发的引擎。 不管是从自动化部署还是自定义工具上,都很强大。 关键看你打不打算花时间去这样用。
BaseHierarchySort
在Hierarchy中,所有对象默认是按首字母排序。 如果我想根据创建日期,或者是根据地理位置,又或者根据对象类型来排序,如何做呢。 这就需要用到BaseHierarchySort,我们可以重写它的Compare方法,同时,我们添加几个菜单来做切换。就能使我们的工作很加便利了。
EditorUtility
一看明字就知道,这货肯定提供了不少全局函数,并且多半是静态的。比如,你想弹出一个打开文件的对话框,或者保存文件的对话框。或者你要查看场景树中的某个对象是enable与否,都可以通过它来访问。更好的是,他还提供了一个弹出对话框。 你想做一些让用户选择是否确定的,或者显示一个About,可以使它。
这个类提供了一些文件拷贝,移动位置等操作,在命令行模式进行自动布署的时候,使用居多。
在你的编辑器中,如果你觉得你的文字不足以表达,或者需要用户查询相关文档,那你可以使用HELP,它提供了打开网页地址的功能。
ObjectPreview
这个类提供了你当前选择的对象数据。 比如,在上面显示攻击和侦测范围的例子中,如果我们只是想让选中的单位才显示预览,那我们可以通过这个类的target来判定。
这个类提供了对象批量查找功能,比如,如果我们的工具,想对某一类对象进行打包。 那我们直接使用FindObjectsOfType,拿到所有的对象即可。 TOOL还提供了实例化对象的功能。
目前我在U3D使用的过程中,接触的大概就是这些东西&&&&另外,关于AssetBundle相关的东西,会专门讲解~
来源:/geniusalex/p/3756741.htmlUnity3d之MonoBehaviour的可重写函数整理
在Unity3d学习中,我把关于MonoBehaviour的可重写函数整理了。
下面的这些函数在Unity3d程序开发中具有很重要的作用.
&当MonoBehaviour启用时,其Update在每一帧被调用。
LateUpdate
当Behaviour启用时,其LateUpdate在每一帧被调用。
FixedUpdate
&当MonoBehaviour启用时,其
FixedUpdate 在每一帧被调用。
&当一个脚本实例被载入时Awake被调用。
Start仅在Update函数第一次被调用前调用。
重置为默认值。
OnMouseEnter
当鼠标进入到GUIElement(GUI元素)或Collider(碰撞体)中时调用OnMouseEnter。
OnMouseOver
当鼠标悬浮在GUIElement(GUI元素)或Collider(碰撞体)上时调用
OnMouseOver&
OnMouseExit
当鼠标移出GUIElement(GUI元素)或Collider(碰撞体)上时调用OnMouseExit。
OnMouseDown
当鼠标在GUIElement(GUI元素)或Collider(碰撞体)上点击时调用OnMouseDown。
&当用户释放鼠标按钮时调用OnMouseUp。
OnMouseUpAsButton
OnMouseUpAsButton只有当鼠标在同一个GUIElement或Collider按下,在释放时调用。
OnMouseDrag
当用户鼠标拖拽GUIElement(GUI元素)或Collider(碰撞体)时调用
OnMouseDrag 。
OnTriggerEnter
当Collider(碰撞体)进入trigger(触发器)时调用OnTriggerEnter。
OnTriggerExit
当Collider(碰撞体)停止触发trigger(触发器)时调用OnTriggerExit。
OnTriggerStay
当碰撞体接触触发器时,OnTriggerStay将在每一帧被调用。
OnCollisionEnter
当此collider/rigidbody触发另一个rigidbody/collider时,OnCollisionEnter将被调用。
OnCollisionExit
当此collider/rigidbody停止触发另一个rigidbody/collider时,OnCollisionExit将被调用。
OnCollisionStay
当此collider/rigidbody触发另一个rigidbody/collider时,OnCollisionStay将会在每一帧被调用。
OnControllerColliderHit
在移动的时,当controller碰撞到collider时OnControllerColliderHit被调用。
OnJointBreak
当附在同一对象上的关节被断开时调用。
OnParticleCollision
当粒子碰到collider时被调用。
OnBecameVisible
当renderer(渲染器)在任何相机上可见时调用OnBecameVisible。
OnBecameInvisible
当renderer(渲染器)在任何相机上都不可见时调用OnBecameInvisible。
OnLevelWasLoaded
当一个新关卡被载入时此函数被调用。
当对象变为可用或激活状态时此函数被调用。
当对象变为不可用或非激活状态时此函数被调用。
当MonoBehaviour将被销毁时,这个函数被调用。
在相机消隐场景之前被调用。
OnPreRender
在相机渲染场景之前被调用。
OnPostRender
在相机完成场景渲染之后被调用。
OnRenderObject
在相机场景渲染完成后被调用。
OnWillRenderObject
如果对象可见每个相机都会调用它。
渲染和处理GUI事件时调用。
OnRenderImage
当完成所有渲染图片后被调用,用来渲染图片后期效果。
OnDrawGizmosSelected
如果你想在物体被选中时绘制gizmos,执行这个函数。
OnDrawGizmos
如果你想绘制可被点选的gizmos,执行这个函数。
OnApplicationPause
当玩家暂停时发送到所有的游戏物体。
OnApplicationFocus
当玩家获得或失去焦点时发送给所有游戏物体。
OnApplicationQuit
在应用退出之前发送给所有的游戏物体。
OnPlayerConnected
当一个新玩家成功连接时在服务器上被调用。
OnServerInitialized
当Network.InitializeServer被调用并完成时,在服务器上调用这个函数。
OnConnectedToServer
当你成功连接到服务器时,在客户端调用。
OnPlayerDisconnected
当一个玩家从服务器上断开时在服务器端调用。
OnDisconnectedFromServer
当失去连接或从服务器端断开时在客户端调用。
OnFailedToConnect
当一个连接因为某些原因失败时在客户端调用。
OnFailedToConnectToMasterServer
当报告事件来自主服务器时在客户端或服务器端调用。
OnMasterServerEvent
当报告事件来自主服务器时在客户端或服务器端调用。
OnNetworkInstantiate
当一个物体使用Network.Instantiate进行网络初始化时调用。
OnSerializeNetworkView
&在一个网络视图脚本中,用于自定义变量同步。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。请问一下如何重写基类的OnTriggerEnter方法?【unity3d吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:78,366贴子:
请问一下如何重写基类的OnTriggerEnter方法?收藏
这个好像不是虚函数,不能override我是用C++的,对C#还不太了解。。请各位指教
登录百度帐号推荐应用Unity3D之MonoBehaviour的可重写函数整理 - CSDN博客
Unity3D之MonoBehaviour的可重写函数整理
最近在学习Unity3d的知识.虽然有很多资料都有记录了,可是我为了以后自己复习的时候方便就记录下来吧!下面的这些函数在Unity3d程序开发中具有很重要的作用.
&当MonoBehaviour启用时,其Update在每一帧被调用。
LateUpdate
当Behaviour启用时,其LateUpdate在每一帧被调用。
FixedUpdate
&当MonoBehaviour启用时,其 FixedUpdate 在每一帧被调用。
&当一个脚本实例被载入时Awake被调用。
Start仅在Update函数第一次被调用前调用。
重置为默认值。
OnMouseEnter
当鼠标进入到GUIElement(GUI元素)或Collider(碰撞体)中时调用OnMouseEnter。
OnMouseOver
当鼠标悬浮在GUIElement(GUI元素)或Collider(碰撞体)上时调用 OnMouseOver .
OnMouseExit
当鼠标移出GUIElement(GUI元素)或Collider(碰撞体)上时调用OnMouseExit。
OnMouseDown
当鼠标在GUIElement(GUI元素)或Collider(碰撞体)上点击时调用OnMouseDown。
&当用户释放鼠标按钮时调用OnMouseUp。
OnMouseUpAsButton
OnMouseUpAsButton只有当鼠标在同一个GUIElement或Collider按下,在释放时调用。
OnMouseDrag
当用户鼠标拖拽GUIElement(GUI元素)或Collider(碰撞体)时调用 OnMouseDrag 。
OnTriggerEnter
当Collider(碰撞体)进入trigger(触发器)时调用OnTriggerEnter。
OnTriggerExit
当Collider(碰撞体)停止触发trigger(触发器)时调用OnTriggerExit。
OnTriggerStay
当碰撞体接触触发器时,OnTriggerStay将在每一帧被调用。
OnCollisionEnter
当此collider/rigidbody触发另一个rigidbody/collider时,OnCollisionEnter将被调用。
OnCollisionExit
当此collider/rigidbody停止触发另一个rigidbody/collider时,OnCollisionExit将被调用。
OnCollisionStay
当此collider/rigidbody触发另一个rigidbody/collider时,OnCollisionStay将会在每一帧被调用。
OnControllerColliderHit
在移动的时,当controller碰撞到collider时OnControllerColliderHit被调用。
OnJointBreak
当附在同一对象上的关节被断开时调用。
OnParticleCollision
当粒子碰到collider时被调用。
OnBecameVisible
当renderer(渲染器)在任何相机上可见时调用OnBecameVisible。
OnBecameInvisible
当renderer(渲染器)在任何相机上都不可见时调用OnBecameInvisible。
OnLevelWasLoaded
当一个新关卡被载入时此函数被调用。
当对象变为可用或激活状态时此函数被调用。
当对象变为不可用或非激活状态时此函数被调用。
当MonoBehaviour将被销毁时,这个函数被调用。
在相机消隐场景之前被调用。
OnPreRender
在相机渲染场景之前被调用。
OnPostRender
在相机完成场景渲染之后被调用。
OnRenderObject
在相机场景渲染完成后被调用。
OnWillRenderObject
如果对象可见每个相机都会调用它。
渲染和处理GUI事件时调用。
OnRenderImage
当完成所有渲染图片后被调用,用来渲染图片后期效果。
OnDrawGizmosSelected
如果你想在物体被选中时绘制gizmos,执行这个函数。
OnDrawGizmos
如果你想绘制可被点选的gizmos,执行这个函数。
OnApplicationPause
当玩家暂停时发送到所有的游戏物体。
OnApplicationFocus
当玩家获得或失去焦点时发送给所有游戏物体。
OnApplicationQuit
在应用退出之前发送给所有的游戏物体。
OnPlayerConnected
当一个新玩家成功连接时在服务器上被调用。
OnServerInitialized
当Network.InitializeServer被调用并完成时,在服务器上调用这个函数。
OnConnectedToServer
当你成功连接到服务器时,在客户端调用。
OnPlayerDisconnected
当一个玩家从服务器上断开时在服务器端调用。
OnDisconnectedFromServer
当失去连接或从服务器端断开时在客户端调用。
OnFailedToConnect
当一个连接因为某些原因失败时在客户端调用。
OnFailedToConnectToMasterServer
当报告事件来自主服务器时在客户端或服务器端调用。
OnMasterServerEvent
当报告事件来自主服务器时在客户端或服务器端调用。
OnNetworkInstantiate
当一个物体使用Network.Instantiate进行网络初始化时调用。
OnSerializeNetworkView
&在一个网络视图脚本中,用于自定义变量同步。
本文已收录于以下专栏:
相关文章推荐
第一步首先了解unity3d的菜单,视图界面。这些事最基本的基础,可以像学word操作一样,大致能明白有几个菜单,几个基本的视图,各自起什么作用的就可以了,可以参考这系列专门介绍界面视图的文章,对于学...
Unity3D中所有控制脚本的基类MonoBehaviour有一些虚函数用于绘制中事件的回调,也可以直接理解为事件函数,例如大家都很清楚的Start,Update等函数,以下做个总结。
接下来学习游戏中重要的一块内容,脚本。脚本可以让游戏世界活起来,不再是毫无生机的图片或固定的电影。而是一个可以交互的世界。在unity3d游戏开发中游戏的逻辑,玩家的输入,网络消息收发等都是由脚本控制...
由于Unity3D中一些腳本的方法只能用在JS中,在C#中是無效的,而C#可以與服務器端通訊,JS本身卻不行。所以勢必會遇到這兩種語言腳本中方法的互相調用,以下是示例。
兩個文件 test1.js 和...
我们主要使用3dsmax2010进行制作,输出FBX的类型导入Unity3D中。
默认情况下,3dsmax8可以和U3D软件直接融合,自动转换为FBX物体。
注意事项如下:
在MAX软...
通讯,动态创建,Prefab,销毁
通过Hierarchy面板下的Create菜单可以手动地创建一个GameObject,它可以是一个相机,一个灯光,或者一个简单的模型,当我们要在程序里面动态地创建...
    在使用unity3d进行游戏开发或者互动项目制作的时候,有3种编辑语言可供使用,不过用的最多的应该是javascript和c#两种语言,相信很多朋友特别是新手都会很纠结于到底该用二者...
I can  sent U some tut how to find that ? because i trying to find by myself and i think Tut and hin...
刚刚接触Unity3D游戏引擎,这里做点学习笔记。下面是我建立的简单场景,左侧的Hierarchy(层次)视图里显示了场景中所有游戏对象,这些基本对象可以从Create下拉菜单里创建。当你点击某个对象...
最近为了工作在学习unity,发现Unity实在是个好东西,普通的程序员自学一段时间就可以很快做成游戏DEMO,可以说,Unity和Unreal3是当前在国内最热的两款游戏引擎,特别因为Unity的跨...
他的最新文章
讲师:何宇健
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Unity3D关于protected函数的重写【unity3d吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:78,366贴子:
Unity3D关于protected函数的重写收藏
protected virtual void RotateTowards (Vector3 dir) {Quaternion rot = tr.Quaternion toTarget = Quaternion.LookRotation (dir);rot = Quaternion.Slerp (rot,toTarget,turningSpeed*Time.fixedDeltaTime);Vector3 euler = rot.eulerAeuler.z = 0;euler.x = 0;rot = Quaternion.Euler (euler);tr.rotation =}我要怎么重写这个函数,这个东西我在另外一个类中已经继承了这个函数并且生成了protected override void RotateTowards (Vector3 dir) {base.RotateTowards(dir);}
达内unity3d培训全程&实战教学&,unity3d金牌讲师授课.免费unity3d课程试听中!到达内unity3d学院学习unity3d,只需4个月速成unity3d游戏工程师.
谁来帮帮忙啊
求救啊。。。。。
你要重写的话就不要用base.RotateTowards(dir),base是调用基类的这个方法,如果你要重写那你就再里面重写就行了
登录百度帐号推荐应用

我要回帖

更多关于 unity 重写物理引擎 的文章

 

随机推荐