Unity2D开发入门-自定义代码片段

前言

在任意地方创建一个文件夹,最好是你不去经常移动的地方,文件夹是用来存放你自定义的代码块的文件夹。

我就创建了一个名称:csharp_snippet 的文件夹。

把所有自定义的代码段都放在该文件夹中。

工具–>代码段管理器 –>选择Visual C#语言 –>选择下方的添加 –>浏览到你自定义的那个放代码块的文件夹就OK啦。

后续

本文自定义代码段的初衷是Visual Studio不支持Unity方法的提示,现在已经找到原因。

原因是安装ReSharper后导致的,卸载ReSharper之后问题解决。

当然也可以在ReSharper中安装插件解决。

ReSharper支持Unity的插件

扩展 > ReSharper > Extension Manager…

搜索 Unity > 点击Install安装Unity Support扩展

代码段不提示

工具 => 选项 => 文本编辑器 => C# => 常规

勾选自动列出成员即可

image-20230724171139466

自定义代码段

新建代码块文件zprop.snippet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>zprop</Title>
<Shortcut>zprop</Shortcut>
<Description>自动实现的属性的代码片段</Description>
<Author>剑行者</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>type</ID>
<ToolTip>属性类型</ToolTip>
<Default>int</Default>
</Literal>
<Literal>
<ID>property</ID>
<ToolTip>属性名</ToolTip>
<Default>MyProperty</Default>
</Literal>
</Declarations>
<Code Language="csharp">
<![CDATA[
$type$ _$property$;
public $type$ $property$
{
get { return _$property$; }
set { _$property$ = value; OnPropertyChanged("$property$"); }
}
$end$
]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>

保存啦,然后依然是去

重启开发工具。

此时要我在项目中打出zprop按两次Tab 那我的数据访问层的代码就全部出来啦,当然还要添加一些引用就可以啦

注意

$end$是一个特殊变量,会在代码生成后,设置光标的定位。

Unity开发自定义代码段

zz_unity_awake.snippet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>Awake</Title>
<Shortcut>zz_unity_awake</Shortcut>
<Description>Unity生命周期方法</Description>
<Author>码客说</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Code Language="csharp">
<![CDATA[
void Awake()
{
$end$
}
]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>

zz_unity_start.snippet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>Start</Title>
<Shortcut>zz_unity_start</Shortcut>
<Description>Unity生命周期方法</Description>
<Author>码客说</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
</Declarations>
<Code Language="csharp">
<![CDATA[
void Start()
{
$end$
}
]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>

zz_unity_update.snippet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>Update</Title>
<Shortcut>zz_unity_update</Shortcut>
<Description>Unity生命周期方法</Description>
<Author>码客说</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
</Declarations>
<Code Language="csharp">
<![CDATA[
void Update()
{
$end$
}
]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>

zz_unity_fixedupdate.snippet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>FixedUpdate</Title>
<Shortcut>zz_unity_fixedupdate</Shortcut>
<Description>Unity生命周期方法</Description>
<Author>码客说</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Code Language="csharp">
<![CDATA[
void FixedUpdate()
{
$end$
}
]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>

zz_unity_lateupdate.snippet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>LateUpdate</Title>
<Shortcut>zz_unity_lateupdate</Shortcut>
<Description>Unity生命周期方法</Description>
<Author>码客说</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Code Language="csharp">
<![CDATA[
void LateUpdate()
{
$end$
}
]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>

zz_unity_onenable.snippet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>OnEnable</Title>
<Shortcut>zz_unity_onenable</Shortcut>
<Description>Unity生命周期方法</Description>
<Author>码客说</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
</Declarations>
<Code Language="csharp">
<![CDATA[
void OnEnable()
{
$end$
}
]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>

zz_unity_ondisable.snippet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>OnDisable</Title>
<Shortcut>zz_unity_ondisable</Shortcut>
<Description>Unity生命周期方法</Description>
<Author>码客说</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
</Declarations>
<Code Language="csharp">
<![CDATA[
void OnDisable()
{
$end$
}
]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>

zz_unity_ondestroy.snippet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>OnDestroy</Title>
<Shortcut>zz_unity_ondestroy</Shortcut>
<Description>Unity生命周期方法</Description>
<Author>码客说</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
</Declarations>
<Code Language="csharp">
<![CDATA[
void OnDestroy()
{
$end$
}
]]>
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>

ReSharper自定义代码段

安装ReSharper插件后,所有自定义的代码段都失效了,是因为

安装ReSharper插件后,它会自动导入代码段,但是后来的代码段是不会被导入的,只能我们自己添加。

我们可以找到

扩展 > Resharper > Tool > Templates Explor

选择语言 新建

image-20230724163252432

内置配置

我们先打开prop的配置

这个相比C#的创建,简单多了

所有输入的$string$都会定义一个被替换的变量

还有特殊的变量$END$,变量作用在用户写完就是跳到END位置。

Unity代码段

Awake

zz_unity_awake

1
2
3
4
void Awake()
{
$END$
}

这样当我们生成代码后,光标就会自动在大括号内。

image-20230724165332189

Start

zz_unity_start

1
2
3
4
void Start()
{
$END$
}

Update

zz_unity_update

1
2
3
4
void Update()
{
$END$
}

FixedUpdate

zz_unity_fixedupdate

1
2
3
4
void FixedUpdate()
{
$END$
}

LateUpdate

zz_unity_lateupdate

1
2
3
4
void LateUpdate()
{
$END$
}

OnEnable

zz_unity_onenable

1
2
3
4
void OnEnable()
{
$END$
}

OnDisable

zz_unity_ondisable

1
2
3
4
void OnDisable()
{
$END$
}

OnDestroy

zz_unity_ondestroy

1
2
3
4
void OnDestroy()
{
$END$
}