Optimize GC for setting image.frame.

This commit is contained in:
2023-02-18 14:40:56 +08:00
parent 2a6a33e60c
commit ff8c925f32

View File

@@ -56,7 +56,7 @@ namespace Cryville.Crtr.Components {
public class SpritePlane : SpriteBase {
public SpritePlane() {
SubmitProperty("frame", new PropOp.String(v => { Frames = new string[] { v }; Index = 0; }));
SubmitProperty("frame", new PropOp.String(v => Frame = v));
SubmitProperty("frames", new PropOp.StringArray(v => Frames = v));
SubmitProperty("index", new PropOp.Integer(v => Index = v));
SubmitProperty("fit", new PropOp.Enum<FitMode>(v => Fit = v, v => (FitMode)v));
@@ -89,7 +89,7 @@ namespace Cryville.Crtr.Components {
OnFrameUpdate();
}
}
SpriteInfo[] m_frames = new SpriteInfo[0];
SpriteInfo[] m_frames = new SpriteInfo[] { new SpriteInfo() };
public string[] Frames {
set {
m_frames = new SpriteInfo[value.Length];
@@ -99,6 +99,13 @@ namespace Cryville.Crtr.Components {
OnFrameUpdate();
}
}
public string Frame {
set {
if (value == CurrentFrame.FrameName) return;
CurrentFrame.FrameName = value;
OnFrameUpdate();
}
}
protected SpriteInfo CurrentFrame {
get {
if (m_frames.Length == 0) return null;