Invoking this()
вызовет базовый конструктор, неявно или явно.Поэтому второй вызов base
будет во второй раз, когда вы создаете тот же объект, что недопустимо.
Вы можете поделиться кодом конструктора, создав частный вспомогательный метод, например так:
public class EasyRawImage : EasyUIELementFoundation
{
private RawImage UIImageComponent;
private Texture2D _image;
public Texture2D Image
{
get
{
return _image;
}
set
{
UIImageComponent.texture = value;
_image = value;
}
}
public EasyRawImage() : base()
{
InitUiImageComponent();
}
public EasyRawImage(UnityEngine.Object image, Vector2 position) : base(position)
{
InitUiImageComponent();
//some code...
}
private void InitUiImageComponent() {
UIImageComponent = UIElement.AddComponent(typeof(RawImage)) as RawImage;
}
}
В вашем конкретном случае код инициализации может быть помещен непосредственно в инициализатор, поэтому вспомогательный метод становится ненужным:
public class EasyRawImage : EasyUIELementFoundation
{
private RawImage UIImageComponent = UIElement.AddComponent(typeof(RawImage));
private Texture2D _image;
public Texture2D Image
{
get
{
return _image;
}
set
{
UIImageComponent.texture = value;
_image = value;
}
}
public EasyRawImage() : base()
{
}
public EasyRawImage(UnityEngine.Object image, Vector2 position) : base(position)
{
//some code...
}
}