You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+14-14Lines changed: 14 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,9 +8,9 @@
8
8
9
9
## Overview
10
10
11
-
Alchemy is a library that provides Inspector extensions using attributes.
11
+
Alchemy is a library that provides attribute-based Inspector extensions.
12
12
13
-
In addition to providing easy and powerful attribute-based editor extensions, it allows serialization of any types (Dictionary, HashSet, Nullable, Tuple, etc.) via its own serialization system, so those types can be edited in the Inspector. Alchemy works simply by adding attributes to the target type — just mark it as `partial`, and a Source Generator creates the necessary code. Unlike Odin, there is no need to inherit from dedicated base classes.
13
+
In addition to providing easy and powerful attribute-based editor extensions, Alchemy can serialize types that Unity does not normally support, such as dictionaries, hash sets, nullable value types, and tuples, so they can be edited in the Inspector. Add the appropriate attributes to a target type and mark it as `partial`; a source generator creates the necessary code. Unlike Odin, there is no need to inherit from dedicated base classes.
You can add toggles for each object's active/inactive state and icons that show its components to the Hierarchy. These can be configured from Project Settings.
216
+
You can display active-state toggles and component icons for each object in the Hierarchy. These features can be configured in Project Settings.
Data for windows that inherit from `AlchemyEditorWindow` is saved as JSON in the project's ProjectSettings folder. For more details, refer to [Saving Editor Window Data](https://annulusgames.github.io/Alchemy/articles/en/saving-editor-window-data.html).
281
+
Data for windows that inherit from `AlchemyEditorWindow` is saved as JSON in the project's `ProjectSettings` folder. For more details, refer to [Saving Editor Window Data](https://annulusgames.github.io/Alchemy/articles/en/saving-editor-window-data.html).
282
282
283
283
## Using Serialization Extensions
284
284
285
-
If you want to edit types that Unity cannot serialize, such as Dictionary, you can use the `[AlchemySerialize]` attribute to serialize these types.
285
+
To edit types that Unity does not normally serialize, such as dictionaries, use the `[AlchemySerialize]` attribute.
286
286
287
287
Serialization extensions require the [Unity.Serialization](https://docs.unity3d.com/Packages/com.unity.serialization@3.1/manual/index.html) package. Additionally, reflection-based serialization using Unity.Serialization may not work in AOT environments prior to Unity 2022.1. Check the package manual for details.
288
288
@@ -295,7 +295,7 @@ using UnityEngine;
295
295
usingAlchemy.Serialization;
296
296
297
297
// By adding the [AlchemySerialize] attribute, Alchemy's serialization extension is enabled.
298
-
// It can be used with any type, regardless of its base class, but the target type must be partial for the Source Generator to generate code.
298
+
// It can be used regardless of the target type's base class, but the target type must be partial for the source generator to generate code.
Copy file name to clipboardExpand all lines: docs/articles/en/about.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,8 +2,8 @@
2
2
3
3

4
4
5
-
Alchemy is a library that provides a rich set of editor extensions for Unity. By integrating Alchemy, over 30 attributes are added to easily extend the Inspector. Additionally, by utilizing the Unity.Serialization package and a dedicated Source Generator, it becomes possible to serialize and edit types not normally serializable in Unity (`Dictionary`, `HashSet`, `Nullable`, `ValueTuple`, etc.) directly from the Inspector.
5
+
Alchemy is a library that provides a rich set of editor extensions for Unity. It includes more than 30 attributes that make it easy to extend the Inspector. With the Unity.Serialization package and a dedicated source generator, Alchemy can also serialize and edit types that Unity does not normally support, including `Dictionary`, `HashSet`, `Nullable`, and `ValueTuple`.
6
6
7
7

8
8
9
-
Furthermore, version 2.0 introduces new features such as EditorWindow extensions and Hierarchy extensions. These enable the easy creation of tools to streamline the development workflow within the editor.
9
+
Version 2.0 also introduces editor-window and Hierarchy extensions. These features make it easy to build tools that streamline development workflows in the Unity Editor.
Copy file name to clipboardExpand all lines: docs/articles/en/alchemy-editor-window.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -50,4 +50,4 @@ public class EditorWindowExample : AlchemyEditorWindow
50
50
51
51

52
52
53
-
Data from windows created by inheriting `AlchemyEditorWindow` is saved in JSON format in the ProjectSettings folder of the project. For more details, refer to the [Saving Editor Window Data](saving-editor-window-data.md) page.
53
+
Data for windows derived from `AlchemyEditorWindow` is saved as JSON in the project's `ProjectSettings` folder. For more details, refer to [Saving Editor Window Data](saving-editor-window-data.md).
Copy file name to clipboardExpand all lines: docs/articles/en/alchemy-serialization-process.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Alchemy Serialization Process
2
2
3
-
In Alchemy, by adding the `[AlchemySerialize]`attribute to the target type, a dedicated Source Generator automatically implements`ISerializationCallbackReceiver`. Within this process, all fields annotated with `[AlchemySerializeField]`are gathered, and using the Unity.Serialization package, they are converted to JSON format. However, fields of type `UnityEngine.Object` cannot be handled in JSON format, so their instances are saved in a single list, and only their indices are written to JSON.
3
+
Adding `[AlchemySerialize]` to a target type causes Alchemy's source generator to implement`ISerializationCallbackReceiver`. It collects all fields marked with `[AlchemySerializeField]` and uses the Unity.Serialization package to serialize their data to JSON. Because references to `UnityEngine.Object`instances cannot be represented directly in JSON, Alchemy stores them in a separate list and writes their indices to the JSON data.
4
4
5
5
For example, consider the following class:
6
6
@@ -77,4 +77,4 @@ partial class AlchemySerializationExample : global::UnityEngine.ISerializationCa
77
77
}
78
78
```
79
79
80
-
Using `[AlchemySerializeField]`increases the processing load for serialization and deserialization. Therefore, it is recommended to avoid using `[AlchemySerializeField]` whenever possible.
80
+
Using `[AlchemySerializeField]`adds serialization and deserialization overhead. Use it only for fields that Unity cannot serialize normally.
Copy file name to clipboardExpand all lines: docs/articles/en/attributes/disable-alchemy-editor.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Disable Alchemy Editor Attribute
2
2
3
-
Disables the AlchemyEditor for the target class and uses the default Inspector for rendering. When this attribute is added to a field, only that field will be rendered using the default PropertyField.
3
+
Disables `AlchemyEditor` for the target class and uses the default Inspector instead. When this attribute is added to a field, only that field is rendered using the default `PropertyField`.
0 commit comments