Skip to content

Commit 4db8d66

Browse files
committed
Fix the bug that, branch not work for gcomponent.
1 parent 8bbe54d commit 4db8d66

File tree

4 files changed

+33
-26
lines changed

4 files changed

+33
-26
lines changed

Assets/Scripts/UI/AsyncCreationHelper.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ static IEnumerator _CreateObject(PackageItem item, UIPackage.CreateObjectCallbac
3636
if (di.packageItem != null)
3737
{
3838
obj = UIObjectFactory.NewObject(di.packageItem);
39-
obj.packageItem = di.packageItem;
4039
objectPool.Add(obj);
4140

4241
UIPackage._constructing++;

Assets/Scripts/UI/GComponent.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1295,13 +1295,15 @@ internal void ConstructFromResource(List<GObject> objectPool, int poolIndex)
12951295
{
12961296
this.gameObjectName = packageItem.name;
12971297

1298-
if (!packageItem.translated)
1298+
PackageItem contentItem = packageItem.getBranch();
1299+
1300+
if (!contentItem.translated)
12991301
{
1300-
packageItem.translated = true;
1301-
TranslationHelper.TranslateComponent(packageItem);
1302+
contentItem.translated = true;
1303+
TranslationHelper.TranslateComponent(contentItem);
13021304
}
13031305

1304-
ByteBuffer buffer = packageItem.rawData;
1306+
ByteBuffer buffer = contentItem.rawData;
13051307
buffer.Seek(0, 0);
13061308

13071309
underConstruct = true;
@@ -1398,15 +1400,14 @@ internal void ConstructFromResource(List<GObject> objectPool, int poolIndex)
13981400
if (pkgId != null)
13991401
pkg = UIPackage.GetById(pkgId);
14001402
else
1401-
pkg = packageItem.owner;
1403+
pkg = contentItem.owner;
14021404

14031405
pi = pkg != null ? pkg.GetItem(src) : null;
14041406
}
14051407

14061408
if (pi != null)
14071409
{
14081410
child = UIObjectFactory.NewObject(pi);
1409-
child.packageItem = pi;
14101411
child.ConstructFromResource();
14111412
}
14121413
else
@@ -1473,7 +1474,7 @@ internal void ConstructFromResource(List<GObject> objectPool, int poolIndex)
14731474
int i2 = buffer.ReadInt();
14741475
if (hitTestId != null)
14751476
{
1476-
PackageItem pi = packageItem.owner.GetItem(hitTestId);
1477+
PackageItem pi = contentItem.owner.GetItem(hitTestId);
14771478
if (pi != null && pi.pixelHitTestData != null)
14781479
rootContainer.hitArea = new PixelHitTest(pi.pixelHitTestData, i1, i2, sourceWidth, sourceHeight);
14791480
}
@@ -1512,7 +1513,7 @@ internal void ConstructFromResource(List<GObject> objectPool, int poolIndex)
15121513
BuildNativeDisplayList();
15131514
SetBoundsChangedFlag();
15141515

1515-
if (packageItem.objectType != ObjectType.Component)
1516+
if (contentItem.objectType != ObjectType.Component)
15161517
ConstructExtension(buffer);
15171518

15181519
ConstructFromXML(null);

Assets/Scripts/UI/UIObjectFactory.cs

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,16 +97,33 @@ public static void Clear()
9797
///
9898
/// </summary>
9999
/// <param name="pi"></param>
100+
/// <param name="userClass"></param>
100101
/// <returns></returns>
101-
public static GObject NewObject(PackageItem pi)
102+
public static GObject NewObject(PackageItem pi, System.Type userClass = null)
102103
{
103-
if (pi.extensionCreator != null)
104+
GObject obj;
105+
if (pi.type == PackageItemType.Component)
104106
{
105-
Stats.LatestObjectCreation++;
106-
return pi.extensionCreator();
107+
if (userClass != null)
108+
{
109+
Stats.LatestObjectCreation++;
110+
obj = (GComponent)Activator.CreateInstance(userClass);
111+
}
112+
else if (pi.extensionCreator != null)
113+
{
114+
Stats.LatestObjectCreation++;
115+
obj = pi.extensionCreator();
116+
}
117+
else
118+
obj = NewObject(pi.objectType);
107119
}
108120
else
109-
return NewObject(pi.objectType);
121+
obj = NewObject(pi.objectType);
122+
123+
if (obj != null)
124+
obj.packageItem = pi;
125+
126+
return obj;
110127
}
111128

112129
/// <summary>

Assets/Scripts/UI/UIPackage.cs

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1081,24 +1081,14 @@ GObject CreateObject(PackageItem item, System.Type userClass)
10811081

10821082
GetItemAsset(item);
10831083

1084-
GObject g = null;
1085-
if (item.type == PackageItemType.Component)
1086-
{
1087-
if (userClass != null)
1088-
g = (GComponent)Activator.CreateInstance(userClass);
1089-
else
1090-
g = UIObjectFactory.NewObject(item);
1091-
}
1092-
else
1093-
g = UIObjectFactory.NewObject(item);
1094-
1084+
GObject g = UIObjectFactory.NewObject(item, userClass);
10951085
if (g == null)
10961086
return null;
10971087

10981088
_constructing++;
1099-
g.packageItem = item;
11001089
g.ConstructFromResource();
11011090
_constructing--;
1091+
11021092
return g;
11031093
}
11041094

0 commit comments

Comments
 (0)