Skip to content

Commit 942a25a

Browse files
authored
Merge pull request #4 from quabug/field-prefix
set custom prefix of generated field
2 parents 4b9b4e2 + 48b1480 commit 942a25a

File tree

6 files changed

+34
-23
lines changed

6 files changed

+34
-23
lines changed

Assets/Sample/MyMonoBehavior.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,8 @@ public class MyMonoBehavior : MonoBehaviour
88
{
99
[GenericSerializeReference]
1010
public IMyInterface<int> Value { get; set; }
11+
12+
[GenericSerializeReference("_serialized")]
13+
public IMyInterface<int> Foo { get; set; }
14+
private int __Foo;
1115
}

Assets/Sample/Test.unity

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -153,19 +153,19 @@ MonoBehaviour:
153153
m_Script: {fileID: 11500000, guid: 3a000e60ca5341d5a1f7805ac73274e1, type: 3}
154154
m_Name:
155155
m_EditorClassIdentifier:
156-
_IntFloat:
156+
__IntFloat:
157157
id: 0
158-
_FloatInt:
158+
__FloatInt:
159159
id: 1
160-
_IntInt:
160+
__IntInt:
161161
id: 2
162-
_Int:
162+
__Int:
163163
id: 3
164-
_Double:
164+
__Double:
165165
id: 4
166-
_IntObject:
166+
__IntObject:
167167
id: 5
168-
_IntIntObject:
168+
__IntIntObject:
169169
id: 6
170170
references:
171171
version: 1
@@ -174,23 +174,22 @@ MonoBehaviour:
174174
data:
175175
V: 0
176176
00000001:
177-
type: {class: TestMonoBehavior/<FloatInt>__generic_serialize_reference/NonGeneric, ns: GenericSerializeReference.Sample, asm: GenericSerializeReference.Sample}
177+
type: {class: TestMonoBehavior/<FloatInt>__generic_serialize_reference/SubObject, ns: GenericSerializeReference.Sample, asm: GenericSerializeReference.Sample}
178178
data:
179179
ValueT: 0
180180
ValueU: 0
181-
ValueDouble: 0
181+
SubValueT: []
182+
SubValueU:
182183
00000002:
183-
type: {class: TestMonoBehavior/<IntInt>__generic_serialize_reference/SubObject, ns: GenericSerializeReference.Sample, asm: GenericSerializeReference.Sample}
184+
type: {class: TestMonoBehavior/<IntInt>__generic_serialize_reference/PartialObject, ns: GenericSerializeReference.Sample, asm: GenericSerializeReference.Sample}
184185
data:
185186
ValueT: 0
186187
ValueU: 0
187-
SubValueT:
188-
SubValueU:
188+
ValueDouble: 0
189189
00000003:
190-
type: {class: TestMonoBehavior/<Int>__generic_serialize_reference/SubObject, ns: GenericSerializeReference.Sample, asm: GenericSerializeReference.Sample}
190+
type: {class: TestMonoBehavior/<Int>__generic_serialize_reference/Object, ns: GenericSerializeReference.Sample, asm: GenericSerializeReference.Sample}
191191
data:
192192
Value: 0
193-
SubValue:
194193
00000004:
195194
type: {class: TestMonoBehavior/<Double>__generic_serialize_reference/SubObject, ns: GenericSerializeReference.Sample, asm: GenericSerializeReference.Sample}
196195
data:
@@ -202,11 +201,12 @@ MonoBehaviour:
202201
Value: 0
203202
SubValue:
204203
00000006:
205-
type: {class: TestMonoBehavior/<IntIntObject>__generic_serialize_reference/PartialObject, ns: GenericSerializeReference.Sample, asm: GenericSerializeReference.Sample}
204+
type: {class: TestMonoBehavior/<IntIntObject>__generic_serialize_reference/SubObject, ns: GenericSerializeReference.Sample, asm: GenericSerializeReference.Sample}
206205
data:
207206
ValueT: 0
208207
ValueU: 0
209-
ValueDouble: 0
208+
SubValueT:
209+
SubValueU:
210210
--- !u!4 &366887100
211211
Transform:
212212
m_ObjectHideFlags: 0
@@ -233,9 +233,13 @@ MonoBehaviour:
233233
m_Script: {fileID: 11500000, guid: 810f573826344204a49b76ad339a67e3, type: 3}
234234
m_Name:
235235
m_EditorClassIdentifier:
236-
_Value:
236+
__Value:
237237
id: 0
238+
_serializedFoo:
239+
id: 1
238240
references:
239241
version: 1
240242
00000000:
241243
type: {class: MyMonoBehavior/<Value>__generic_serialize_reference/MyIntObject, ns: , asm: GenericSerializeReference.Sample}
244+
00000001:
245+
type: {class: MyMonoBehavior/<Foo>__generic_serialize_reference/MyIntObject, ns: , asm: GenericSerializeReference.Sample}

Assets/Sample/TestSO.asset

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ MonoBehaviour:
1212
m_Script: {fileID: 11500000, guid: 12c1653695b84d9489cbf7948c3d8d27, type: 3}
1313
m_Name: TestSO
1414
m_EditorClassIdentifier:
15-
_IntFloat:
15+
__IntFloat:
1616
id: 0
1717
references:
1818
version: 1

Packages/generic-serialize-reference/Editor/GenericSerializeReferencePostProcessor.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ from attribute in GetAttributesOf<GenericSerializeReferenceAttribute>(property)
8585

8686
var serializedFieldInterface = CreateWrapperClass(property);
8787
logger.Info($"generate nested class with interface {serializedFieldInterface.FullName}");
88-
var serializedField = CreateSerializeReferenceField(property, serializedFieldInterface);
88+
var fieldNamePrefix = (string)attribute.ConstructorArguments[0].Value;
89+
var serializedField = CreateSerializeReferenceField(property, serializedFieldInterface, fieldNamePrefix);
8990
InjectGetter(property, serializedField);
9091
InjectSetter(property, serializedField);
9192
modified = true;
@@ -135,13 +136,13 @@ void InjectSetter(PropertyDefinition property, FieldDefinition serializedField)
135136
instructions.Insert(retIndex + 2, Instruction.Create(OpCodes.Stfld, serializedField));
136137
}
137138

138-
FieldDefinition CreateSerializeReferenceField(PropertyDefinition property, TypeReference @interface)
139+
FieldDefinition CreateSerializeReferenceField(PropertyDefinition property, TypeReference @interface, string namePrefix)
139140
{
140141
//.field private class GenericSerializeReference.Tests.TestMonoBehavior/__generic_serialize_reference_GenericInterface__/IBase _GenericInterface
141142
// .custom instance void [UnityEngine.CoreModule]UnityEngine.SerializeReference::.ctor()
142143
// = (01 00 00 00 )
143144
var serializedField = new FieldDefinition(
144-
$"_{property.Name}"
145+
$"{namePrefix}{property.Name}"
145146
, FieldAttributes.Private
146147
, @interface
147148
);

Packages/generic-serialize-reference/Runtime/GenericSerializeReferenceAttribute.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ namespace GenericSerializeReference
55
[AttributeUsage(AttributeTargets.Property)]
66
public class GenericSerializeReferenceAttribute : Attribute
77
{
8-
public string SerializedFieldPrefix = "_";
8+
public string SerializedFieldPrefix { get; }
9+
public GenericSerializeReferenceAttribute(string serializedFieldPrefix = "__") =>
10+
SerializedFieldPrefix = serializedFieldPrefix;
911
}
1012
}

Packages/generic-serialize-reference/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "com.quabug.generic-serialize-reference",
33
"description": "Automatically alter generic field of SerializeReference into its non-generic form",
4-
"version": "1.0.1",
4+
"version": "1.1.0",
55
"unity": "2020.2",
66
"displayName": "GenericSerializeReference",
77
"samples": [

0 commit comments

Comments
 (0)