问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在在unity里做类扩展,创建一个C#文件?

发布网友 发布时间:2022-05-13 04:52

我来回答

3个回答

热心网友 时间:2022-05-15 17:07

展开3全部

Extending the Editor


一)Unity允许你使用自己定制的inspectors和Editor Windows扩展编辑器,并且你可以使用定制的Property Drawers定义属性集在inspector中如何展示,这一块讲述如何使用这些特性。


Editor Windows


你可以在你的app中创建任意数量的定制窗口。它们的表现就像Inspector,Scene或者其它内置的窗口。这是给你的游戏添加一个子系统用户接口的绝佳方式。[比如地图编辑器]


做一个自定义的Editor Window包含以下几个简单步骤:


1.创建脚本,继承EditorWindow类


2.使用代码去触发窗口显示自己


3.为你的工具实现GUI代码


Derive From EditorWindow


二)为了制作你的Editor Window,你的脚本必须存放在一个叫做"Editor"的文件夹中。在这个脚本中创建一个类,它继承自EditorWindow.然后在内部的OnGUI方法里面编写你的GUI控制。

using UnityEngine;
using UnityEditor;
using System.Collections;
public class Example:EditorWindow
{
  void onGUI()
  {
    // The actual window code goes here   
  }
}
Showing the window


三)为了在屏幕上显示窗口,制作一个menu item来显示它,这个靠创建一个方法完成,而激活这个方法则是靠MenuItem属性。


Unity的默认行为是循环利用窗口(即:再次选择menu item会显示已经存在的窗口。这是靠使用EditorWindow.GetWindow方法实现),例如:

using UnityEngine;
using UnityEditor;
using System.Collections;
class MyWindow : EditorWindow {
    [MenuItem ("Window/My Window")]
    public static void  ShowWindow () {
        EditorWindow.GetWindow(typeof(MyWindow));
    }
    
    void OnGUI () {
        // The actual window code goes here
    }
}

四)这会创造一个标准的,可停靠的编辑窗口,它会在指令之间保存它的位置,可以使用自定义的布局,等等。想要获得更多的操控,你可以使用GetWindowWithRect.


Implementing Your Window's GUI


窗口中实际的内容靠实现OnGUI方法绘制。你在游戏内部GUI中使用的UnityGUI类(GUI和GUILayout)在这里也可以使用。此外我们提供了一些额外的GUI操作,它们在editor-only类里面:EditorGUI和EditorGUILayout。这些类添加在了普通类已经可用的控件集合里,所以你可以随意的混合搭配使用它们。


五)下面的C#代码展示了你如何添加GUI元素到自定义的EditorWindow中:

using UnityEditor;
using UnityEngine;
public class MyWindow : EditorWindow
{
    string myString = "Hello World";
    bool groupEnabled;
    bool myBool = true;
    float myFloat = 1.23f;
    
    // Add menu item named "My Window" to the Window menu
    [MenuItem("Window/My Window")]
    public static void ShowWindow()
    {
        //Show existing window instance. If one doesn't exist, make one.
        EditorWindow.GetWindow(typeof(MyWindow));
    }
    
    void OnGUI()
    {
        GUILayout.Label ("Base Settings", EditorStyles.boldLabel);
        myString = EditorGUILayout.TextField ("Text Field", myString);
        
        groupEnabled = EditorGUILayout.BeginToggleGroup ("Optional Settings", groupEnabled);
            myBool = EditorGUILayout.Toggle ("Toggle", myBool);
            myFloat = EditorGUILayout.Slider ("Slider", myFloat, -3, 3);
        EditorGUILayout.EndToggleGroup ();
    }
}

六)样例代码的执行结果如下图:

热心网友 时间:2022-05-15 18:25

如果是MonoBehaviour的话,直接用unity editor的Asset中新建一个C#代码资源,然后把基类改成你想要继承的那个类名。但是注意所有unity引擎提供的事件方法,例如Start Awake Update什么的那些函数,他们本身是不会进行子类自动override基类对应方法的。也就是说即使基类的Start方法声明成virtual,子类的Start如果不写些不会自动调用基类的Start。所以这种情况你就得自己处理了,比如子类Start()里面显示调用base.Start()。或者干脆再声明一套 protected virtual/abstract void OnStart();这样在基类Start里调用OnStart,然后派生类根据需要看看是不是用得着override一下OnStart也行。

热心网友 时间:2022-05-15 20:00

类扩展方法?雨松博客有
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 lua如何继承unity类 梦见有人剪我头发? 急需骆驼祥子读后感600字以上 (要原创初二水平的) 微信绑定的银行卡解绑之后,还可以在另一个上绑定吗? 灰色裤子如何搭配上衣男 微信绑定的银行卡解绑之后,还可以在另一个上绑定吗? 灰色卫裤怎么搭配图片 交通事故责任认定程序的认定标准是怎样的呢 求1篇西游记读后感1000字的作文 交警痕迹鉴定什么样的 车辆痕迹鉴定 道路交通事故痕迹鉴定怎么做? dsw的ssl secure checkout是什么意思 就是在c语言这些文件名是什么意思Cpp1.cpp /Cpp1.dsp /Cpp1.ncb /Cpp1.plg /Cpp1.dsw /Cpp1.opt。 win7下 用vc6 不能打开dsw文件 C++语言中 .cpp \.h \.rc 等扩展名都代表什么意思 安邦保险破产是真的吗 pos58小票打印机背面 dsw1 dsw2是什么意思? 一个比较大的C++6.0项目,为什么会有很多个.dsw文件?请问这些是怎么组织到一起的呢? 电路板上DSW端子是什么意思 微信绑定的银行卡解绑之后,还可以在另一个上绑定吗? unity 定义一个类。其他脚本都调用这个类里的方法。 请问Unity中所有类的基类是Object还是MonoBehaviour? unity3d中哪些是类哪些是方法 Unity3D普通类和继承自MonoBehaviour类的区别 Unity中的所有类是不是都没有构造函数 微信绑定的银行卡解绑之后,还可以在另一个上绑定吗? 国家占地苗圃赔偿标准 国家征用土地修路多少钱一亩 我是学电气自动化的,想找个对口的工作,家里希望是公务员,请问,我可以考什么考试? 怎么延时? 小说,少年枭雄 小说少年枭雄一共多少章? 小说《少年枭雄》跟主角有关系的女主角有几个额? 唐胡里奥的唐胡里奥的品级 少年枭雄,作者:小猪崽子,这本小说,除了用阅路小说网能看,苹果能用哪个app搜索阅读啊,谢谢各位 唐胡里奥的唐胡里奥的饮用 玫瑰宫的阿根廷总统府 少年枭雄全本小说哪里下载 donjulio(1942)多少钱一瓶