如何为“开始”和“更新”等常用功能添加自动完成功能

时间:2014-05-29 09:32:08

标签: c# unity3d monodevelop

Monodevelop可以自动完成代码,但无法自动完成StartUpdateFixedUpdateOnCollisionEnter等关键功能,等等我经常拼错关键功能。

有没有办法为这些常用功能添加自动完成或拼写检查条目?

4 个答案:

答案 0 :(得分:3)

虽然您无法在MonoDevelop中创建自动更正条目,但您可以创建Code Snippets(在MonoDevelop中称为代码模板)。

代码片段是在您键入id字符串(例如,开始)和点击标签时自动创建的一大块代码。它可能是一个函数,一个属性,你总是发现自己编写的一些样板(例如GetComponent调用)。它甚至出现在自动更正列表中。

代码片段功能非常强大,甚至允许您通过样板标签并轻松快速地更改类型和变量名称等重要内容。

只需为您通常遇到问题的每个项目创建一个代码段(MonoDevelop->工具 - >选项 - >文字编辑器 - >代码模板 - >添加)。

答案 1 :(得分:2)

好吧,您可以使用Unity Snippets for MonoDevelop解决您的问题。它有很多有用的片段,效果非常好。当代码段代码出现时,双击TAB键以插入模板。

Image

下载 Unity.template.xml 并在C:\ Users {your_pc_name_here} \ AppData \ Roaming \ MonoDevelop-Unity-5.0中创建一个名为 Snippets 的文件夹 (或在Windows中按Win + R - >%appdata%)并将此文件复制到该文件夹​​。在重新启动Monodevelop时,代码片段将正常工作。

答案 2 :(得分:0)

正如Andrey所说,我相信Unity通过命名/签名约定来访问那些方法而不是任何编译时身份。

您可以做的是定义代表这些方法的interface

public interface IStart
{
    void Start();
}

public interface IUpdate
{
    void Update();
}

然后在您的脚本类中,您可以继承您要实现的接口:

public class MyScript : MonoBehaviour, IStart, IUpdate
{
    public void Start()
    {

    }

    public void Update()
    {

    }
}

缺点是这些方法变为public。我从未尝试过,但我假设 Unity支持通过explicit interface implementation实施这些方法,这可能有助于隐藏隐藏来自的方法调用典型的 API访问:

public class MyScript : MonoBehaviour, IStart, IUpdate
{
    void IStart.Start()
    {

    }

    void IUpdate.Update()
    {

    }
}

一旦你有这些,如果你输入方法签名就会出现编译错误。

作为额外的奖励,我不知道MonoDevelop是否有此选项,但在Visual Studio中,当您在类声明中添加接口继承时,您将获得一个上下文选项以使Visual Studio automatically implement成为接口方法签名(隐式或显式)。

答案 3 :(得分:0)

这个问题花了我几个小时,并没有解决蚂蚁的问题。 但我发现我们可以从5.5版本开始整合Microsoft Visual Studio代码IDE。 不需要更多插件,轻松设置为首选项设置中的默认IDE。 那么只需要通过将其作为扩展名进行搜索来安装unity snippets插件,然后完成所有事情。