Unity自动附加组件属性项目教程
1. 项目目录结构及介绍
unity-auto-attach-component-attributes/
├── Scripts/
│ ├── AttachAttributes.cs
│ ├── GetComponentAttribute.cs
│ ├── AddComponentAttribute.cs
│ └── ...
├── .gitignore
├── LICENSE
├── package.json
└── README.md
目录结构说明
- Scripts/: 包含项目的主要代码文件,如
AttachAttributes.cs
、GetComponentAttribute.cs
、AddComponentAttribute.cs
等。这些文件定义了用于自动附加组件的属性和相关逻辑。 - .gitignore: Git忽略文件,用于指定哪些文件或目录不需要被Git跟踪。
- LICENSE: 项目的开源许可证文件,通常包含MIT许可证。
- package.json: Unity包管理器的配置文件,定义了包的名称、版本、依赖关系等信息。
- README.md: 项目的说明文档,通常包含项目的简介、安装方法、使用说明等。
2. 项目启动文件介绍
项目的启动文件主要是Scripts/AttachAttributes.cs
。这个文件包含了用于自动附加组件的主要逻辑和属性定义。
AttachAttributes.cs
using UnityEngine;
public class AttachAttributes : MonoBehaviour
{
[SerializeField]
[FindObjectOfType]
private Camera m_Camera;
[SerializeField]
[GetComponent]
private Image m_Image;
[SerializeField]
[GetComponentInChildren(true)] // include inactive
private Button m_Button;
[SerializeField]
[GetComponentInChildren("Buttons/Button1")] // Get the component from the children by path "Buttons/Button1" in hierarchy
private Button m_Button;
[SerializeField]
[AddComponent] // Add component in editor and attach it to field
private SpringJoint2D m_SpringJoint2D;
[SerializeField]
[GetComponentInParent] // Get component from parent
private Canvas m_Canvas;
}
文件说明
- AttachAttributes.cs: 这个文件定义了多个属性,用于在Unity编辑器中自动附加组件。例如,
[FindObjectOfType]
属性会自动查找并附加场景中的Camera
组件,[GetComponent]
属性会自动附加当前游戏对象上的Image
组件,[AddComponent]
属性会在编辑器中自动添加并附加SpringJoint2D
组件。
3. 项目的配置文件介绍
package.json
{
"name": "nrjwolf.games.attachattributes",
"version": "1.0.0",
"displayName": "Auto Attach Component Attributes",
"description": "This asset helps you to auto attach components into your serialized fields in the inspector.",
"unity": "2019.1",
"dependencies": {
"com.unity.ugui": "1.0.0"
}
}
配置文件说明
- name: 包的名称,通常以
com.unity
或nrjwolf
等前缀开头。 - version: 包的版本号,遵循语义化版本规范。
- displayName: 包的显示名称,通常用于Unity包管理器中。
- description: 包的描述信息,简要说明包的功能和用途。
- unity: 包支持的最低Unity版本。
- dependencies: 包的依赖关系,列出了包所依赖的其他包或库。
通过以上配置文件,Unity可以自动识别并管理该包,确保其在项目中的正确使用。