UI要素をScriptから作成

UI要素をScriptから作成

 Scriptでゲームオブジェクトを作成し、そのオブジェクトに必要なコンポーネントを追加することで、 新たにUI要素を作成します。しかし、この方法でUI要素を作成すると、デフォルトの画像を使用する際に問題が生じます。Editorで実行する場合に限れば以下のコードからデフォルトの画像を取得できます。

UnityEditor.AssetDatabase.GetBuiltinExtraResource("ファイルパス");

当然、Build後には使用できません。そのため、public変数を用意した後にInspectorからデフォルトの画像を指定し、その変数を用いてUI要素に画像を設定する必要があります。以下に掲載されているScriptでは、Editorで実行する場合はUnityのリソースから、Build後は変数に入れられている画像を使用します。

Canvas

 Canvasを作成するScriptです。

    GameObject AddCanvas()
    {
        GameObject obj = new GameObject("Canvas");
        obj.layer = LayerMask.NameToLayer("UI");
        Canvas canvas = obj.AddComponent();
        canvas.renderMode = RenderMode.ScreenSpaceOverlay;
        canvas.sortingOrder = 0;
        canvas.targetDisplay = 0;
        canvas.additionalShaderChannels = AdditionalCanvasShaderChannels.None;
        canvas.pixelPerfect = false;

        CanvasScaler canvas_scalar = obj.AddComponent();
        canvas_scalar.uiScaleMode = CanvasScaler.ScaleMode.ConstantPixelSize;
        canvas_scalar.scaleFactor = 1;
        canvas_scalar.referencePixelsPerUnit = 100;

        obj.AddComponent();

        RectTransform rect = obj.GetComponent();
        rect.anchorMin = Vector2.zero;
        rect.anchorMax = Vector2.one;
        rect.anchoredPosition = Vector2.zero;
        rect.sizeDelta = Vector2.zero;

        return obj;
    }

Text

 Textを作成するScriptです。

    GameObject AddText(GameObject obj_parent, Vector2 pos, string text_name)
    {
        GameObject obj_text = new GameObject(text_name);
        obj_text.transform.SetParent(obj_parent.transform);
        obj_text.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_text = obj_text.AddComponent();
        rect_text.anchorMin = new Vector2(0.5f, 0.5f);
        rect_text.anchorMax = new Vector2(0.5f, 0.5f);
        rect_text.anchoredPosition = pos;
        rect_text.sizeDelta = new Vector2(160f, 30f);

        Text text = obj_text.AddComponent();
        text.font = Resources.GetBuiltinResource("Arial.ttf");
        text.text = "New Text";
        float c = 50f / 255f;
        text.color = new Color(c, c, c, 1f);

        return obj_text;
    }

Image

 Imageを作成するScriptです。

    GameObject AddImage(GameObject obj_parent, Vector2 pos, string image_name)
    {
        GameObject obj_image = new GameObject(image_name);
        obj_image.transform.SetParent(obj_parent.transform);
        obj_image.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_image = obj_image.AddComponent();
        rect_image.anchoredPosition = pos;
        rect_image.sizeDelta = new Vector2(100f, 100f);

        Image image = obj_image.AddComponent();
        image.color = Color.white;

        return obj_image;
    }

RawImage

 RawImageを作成するScriptです。

    GameObject AddRawImage(GameObject obj_parent, Vector2 pos, string image_name)
    {
        GameObject obj_image = new GameObject(image_name);
        obj_image.transform.SetParent(obj_parent.transform);
        obj_image.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_image = obj_image.AddComponent();
        rect_image.anchoredPosition = pos;
        rect_image.sizeDelta = new Vector2(100f, 100f);

        obj_image.AddComponent();

        return obj_image;
    }

Button

 Buttonを作成するScriptです。

    GameObject AddButton(GameObject obj_parent, Vector2 pos, string button_name)
    {
        GameObject obj_button = new GameObject(button_name);
        obj_button.transform.SetParent(obj_parent.transform);
        obj_button.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_button = obj_button.AddComponent();
        rect_button.anchoredPosition = pos;
        rect_button.sizeDelta = new Vector2(160f, 30f);

        Image image_button = obj_button.AddComponent();
        image_button.color = Color.white;
#if UNITY_EDITOR
        image_button.sprite = UnityEditor.AssetDatabase.GetBuiltinExtraResource("UI/Skin/UISprite.psd");
#else
        image_button.sprite = sprite_UISprite;
#endif
        image_button.type = Image.Type.Sliced;

        Button button = obj_button.AddComponent

Toggle

 Toggleを作成するScriptです。

    GameObject AddToggle(GameObject obj_parent, Vector2 pos, string toggle_name)
    {
        GameObject obj_toggle = new GameObject(toggle_name);
        obj_toggle.transform.SetParent(obj_parent.transform);
        obj_toggle.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_toggle = obj_toggle.AddComponent();
        rect_toggle.anchoredPosition = pos;
        rect_toggle.sizeDelta = new Vector3(160f, 20f);
        Toggle toggle = obj_toggle.AddComponent();

        //background
        GameObject obj_bg = new GameObject("Background");
        obj_bg.transform.SetParent(obj_toggle.transform);
        obj_bg.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_bg = obj_bg.AddComponent();
        rect_bg.anchorMin = new Vector2(0f, 1f);
        rect_bg.anchorMax = new Vector2(0f, 1f);
        rect_bg.anchoredPosition = new Vector2(10f, -10f);
        rect_bg.sizeDelta = new Vector2(20f, 20f);
        Image image_bg = obj_bg.AddComponent();
        image_bg.type = Image.Type.Sliced;
#if UNITY_EDITOR
        image_bg.sprite = UnityEditor.AssetDatabase.GetBuiltinExtraResource("UI/Skin/UISprite.psd");
#else
        image_bg.sprite = sprite_UISprite;
#endif

        //checkmark
        GameObject obj_mark = new GameObject("Checkmark");
        obj_mark.transform.SetParent(obj_bg.transform);
        obj_mark.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_mark = obj_mark.AddComponent();
        rect_mark.anchorMin = new Vector2(0.5f, 0.5f);
        rect_mark.anchorMax = new Vector2(0.5f, 0.5f);
        rect_mark.anchoredPosition = Vector2.zero;
        rect_mark.sizeDelta = new Vector2(20f, 20f);

        Image image_mark = obj_mark.AddComponent();
#if UNITY_EDITOR
        image_mark.sprite = UnityEditor.AssetDatabase.GetBuiltinExtraResource("UI/Skin/Checkmark.psd");
#else
        image_mark.sprite = sprite_checkmark;
#endif

        //label
        GameObject obj_label = new GameObject("Label");
        obj_label.transform.SetParent(obj_toggle.transform);

        RectTransform rect_label = obj_label.AddComponent();
        rect_label.anchorMin = Vector2.zero;
        rect_label.anchorMax = Vector2.one;
        rect_label.offsetMin = new Vector2(23f, 1f);
        rect_label.offsetMax = new Vector2(-5f, -2f);

        Text text_label = obj_label.AddComponent();
        text_label.text = toggle_name;
        text_label.color = Color.black;
        text_label.font = Resources.GetBuiltinResource("Arial.ttf");

        toggle.targetGraphic = image_bg;
        toggle.graphic = image_mark;

        return obj_toggle;
    }

Slider

 Sliderを作成するScriptです。

    GameObject AddSlider(GameObject obj_parent, Vector2 pos, string slider_name)
    {
        GameObject obj_slider = new GameObject(slider_name);
        obj_slider.transform.SetParent(obj_parent.transform);
        obj_slider.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_slider = obj_slider.AddComponent();
        rect_slider.anchorMin = new Vector2(0.5f, 0.5f);
        rect_slider.anchorMax = new Vector2(0.5f, 0.5f);
        rect_slider.anchoredPosition = pos;
        rect_slider.sizeDelta = new Vector2(160f, 20f);

        Slider slider = obj_slider.AddComponent();

        //background
        GameObject obj_bg = new GameObject("Background");
        obj_bg.transform.SetParent(obj_slider.transform);
        obj_bg.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_bg = obj_bg.AddComponent();
        rect_bg.anchorMin = new Vector2(0f, 0.25f);
        rect_bg.anchorMax = new Vector2(1f, 0.75f);
        rect_bg.anchoredPosition = Vector2.zero;
        rect_bg.sizeDelta = Vector2.zero;

        Image image_bg = obj_bg.AddComponent();
#if UNITY_EDITOR
        image_bg.sprite = UnityEditor.AssetDatabase.GetBuiltinExtraResource("UI/Skin/Background.psd");
#else
        image_bg.sprite = sprite_background;
#endif
        image_bg.type = Image.Type.Sliced;

        //fill area
        GameObject obj_fillarea = new GameObject("Fill Area");
        obj_fillarea.transform.SetParent(obj_slider.transform);
        obj_fillarea.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_fillarea = obj_fillarea.AddComponent();
        rect_fillarea.anchorMin = new Vector2(0f, 0.25f);
        rect_fillarea.anchorMax = new Vector2(1f, 0.75f);
        rect_fillarea.anchoredPosition = new Vector3(-5f, 0f, 0f);
        rect_fillarea.sizeDelta = new Vector2(-20f, 0f);

        //fill
        GameObject obj_fill = new GameObject("Fill");
        obj_fill.transform.SetParent(obj_fillarea.transform);
        obj_fill.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_fill = obj_fill.AddComponent();
        rect_fill.anchorMin = new Vector2(0f, 0f);
        rect_fill.anchorMax = new Vector2(0f, 1f);
        rect_fill.anchoredPosition = Vector2.zero;
        rect_fill.sizeDelta = new Vector2(10f, 0f);

        Image image_fill = obj_fill.AddComponent();
#if UNITY_EDITOR
        image_fill.sprite = UnityEditor.AssetDatabase.GetBuiltinExtraResource("UI/Skin/UISprite.psd");
#else
        image_bg.sprite = sprite_UISprite;
#endif
        image_fill.type = Image.Type.Sliced;

        //handle side area
        GameObject obj_hsarea = new GameObject("Handle Slide Area");
        obj_hsarea.transform.SetParent(obj_slider.transform);
        obj_hsarea.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_hsarea = obj_hsarea.AddComponent();
        rect_hsarea.anchorMin = Vector2.zero;
        rect_hsarea.anchorMax = new Vector2(1f, 1f);
        rect_hsarea.anchoredPosition = Vector2.zero;
        rect_hsarea.sizeDelta = new Vector2(-20f, 0f);

        //handle
        GameObject obj_handle = new GameObject("Handle");
        obj_handle.transform.SetParent(obj_hsarea.transform);
        obj_handle.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_handle = obj_handle.AddComponent();
        rect_handle.anchorMin = Vector2.zero;
        rect_handle.anchorMax = new Vector2(0f, 1f);
        rect_handle.anchoredPosition = Vector2.zero;
        rect_handle.sizeDelta = new Vector2(20f, 0f);

        Image image_handle = obj_handle.AddComponent();
#if UNITY_EDITOR
        image_handle.sprite = UnityEditor.AssetDatabase.GetBuiltinExtraResource("UI/Skin/Knob.psd");
#else
        image_handle.sprite = sprite_knob;
#endif

        slider.targetGraphic = image_handle;
        slider.fillRect = rect_fill;
        slider.handleRect = rect_handle;

        return obj_slider;
    }

Scrollbar

 Scrollbarを作成するScriptです。

    GameObject AddScrollbar(GameObject obj_parent, Vector2 pos, string scrollbar_name)
    {
        //scrollbar
        GameObject obj_bar = new GameObject(scrollbar_name);
        obj_bar.transform.SetParent(obj_parent.transform);
        obj_bar.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_bar = obj_bar.AddComponent();
        rect_bar.anchoredPosition = pos;
        rect_bar.sizeDelta = new Vector3(160f, 20f);

        Image image_bar = obj_bar.AddComponent();
#if UNITY_EDITOR
        image_bar.sprite = UnityEditor.AssetDatabase.GetBuiltinExtraResource("UI/Skin/Background.psd");
#else
        image_bar.sprite = sprite_background;
#endif
        image_bar.type = Image.Type.Sliced;

        Scrollbar scrollbar = obj_bar.AddComponent();

        //sliding area
        GameObject obj_sa = new GameObject("Sliding Area");
        obj_sa.transform.SetParent(obj_bar.transform);
        obj_sa.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_sa = obj_sa.AddComponent();
        rect_sa.anchoredPosition = Vector2.zero;
        rect_sa.anchorMin = Vector2.zero;
        rect_sa.anchorMax = Vector2.one;
        rect_sa.sizeDelta = new Vector2(-20f, -20f);

        //handle
        GameObject obj_handle = new GameObject("Handle");
        obj_handle.transform.SetParent(obj_sa.transform);
        obj_handle.layer = LayerMask.NameToLayer("UI");
        RectTransform rect_handle = obj_handle.AddComponent();
        rect_handle.anchorMin = Vector2.zero;
        rect_handle.anchorMax = new Vector2(0.2f, 1f);
        rect_handle.anchoredPosition = Vector2.zero;
        rect_handle.sizeDelta = new Vector2(20f, 20f);

        Image image_handle = obj_handle.AddComponent();
#if UNITY_EDITOR
        image_handle.sprite = UnityEditor.AssetDatabase.GetBuiltinExtraResource("UI/Skin/UISprite.psd");
#else
        image_handle.sprite = sprite_UISprite;
#endif
        image_handle.type = Image.Type.Sliced;

        scrollbar.targetGraphic = image_handle;
        scrollbar.handleRect = rect_handle;

        return obj_bar;
    }

Dropdown

 Dropdownを作成するScriptです。Scrollbarを作成するScriptが必要となります。

    GameObject AddDropdown(GameObject obj_parent, Vector2 pos, string drop_name)
    {
        GameObject obj_drop = new GameObject(drop_name);
        obj_drop.transform.SetParent(obj_parent.transform);
        obj_drop.layer = LayerMask.NameToLayer("UI");
        obj_drop.transform.localPosition = pos;

        RectTransform rect_drop = obj_drop.AddComponent();
        rect_drop.sizeDelta = new Vector2(160f, 30f);

        Image image_drop = obj_drop.AddComponent();
#if UNITY_EDITOR
        image_drop.sprite = UnityEditor.AssetDatabase.GetBuiltinExtraResource("UI/Skin/UISprite.psd");
#else
        image_drop.sprite = sprite_UISprite;
#endif
        image_drop.type = Image.Type.Sliced;

        Dropdown dropdown = obj_drop.AddComponent();

        //label
        GameObject obj_label = new GameObject("Label");
        obj_label.transform.SetParent(obj_drop.transform);
        obj_label.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_label = obj_label.AddComponent();
        rect_label.anchorMin = Vector2.zero;
        rect_label.anchorMax = Vector2.one;
        rect_label.anchoredPosition = new Vector2(-7.5f, -0.5f);
        rect_label.sizeDelta = new Vector2(-35f, -13f);

        Text text_label = obj_label.AddComponent();
        text_label.color = Color.black;
        text_label.font = Resources.GetBuiltinResource("Arial.ttf");
        text_label.text = "Option A";
        text_label.alignment = TextAnchor.MiddleLeft;

        //arrow
        GameObject obj_arrow = new GameObject("Arrow");
        obj_arrow.transform.SetParent(obj_drop.transform);
        obj_arrow.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_arrow = obj_arrow.AddComponent();
        rect_arrow.anchorMin = new Vector2(1f, 0.5f);
        rect_arrow.anchorMax = new Vector2(1f, 0.5f);
        rect_arrow.anchoredPosition = new Vector2(-15f, 0f);
        rect_arrow.sizeDelta = new Vector2(20f, 20f);

        Image image_arrow = obj_arrow.AddComponent();
#if UNITY_EDITOR
        image_arrow.sprite = UnityEditor.AssetDatabase.GetBuiltinExtraResource("UI/Skin/DropdownArrow.psd");
#else
        image_arrow.sprite = sprite_dropDownArrow;
#endif

        //template
        GameObject obj_temp = new GameObject("Template");
        obj_temp.transform.SetParent(obj_drop.transform);
        obj_temp.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_temp = obj_temp.AddComponent();
        rect_temp.anchorMin = Vector2.zero;
        rect_temp.anchorMax = new Vector2(1f, 0f);
        rect_temp.anchoredPosition = new Vector2(0f, 2f);
        rect_temp.pivot = new Vector2(0.5f, 1f);
        rect_temp.sizeDelta = new Vector2(0f, 150f);

        Image image_temp = obj_temp.AddComponent();
#if UNITY_EDITOR
        image_temp.sprite = UnityEditor.AssetDatabase.GetBuiltinExtraResource("UI/Skin/UISprite.psd");
#else
        image_temp.sprite = sprite_UISprite;
#endif
        image_temp.type = Image.Type.Sliced;

        ScrollRect srect_tmp = obj_temp.AddComponent();
        srect_tmp.horizontal = false;
        srect_tmp.movementType = ScrollRect.MovementType.Clamped;

        //view port
        GameObject obj_vp = new GameObject("Viewport");
        obj_vp.transform.SetParent(obj_temp.transform);
        obj_vp.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_vp = obj_vp.AddComponent();
        rect_vp.anchorMin = Vector2.zero;
        rect_vp.anchorMax = Vector2.one;
        rect_vp.anchoredPosition = Vector2.zero;
        rect_vp.pivot = new Vector2(0f, 1f);
        rect_vp.sizeDelta = new Vector2(-18f, 0f);

        Mask mask_vp = obj_vp.AddComponent();
        mask_vp.showMaskGraphic = false;

        Image image_vp = obj_vp.AddComponent();
#if UNITY_EDITOR
        image_vp.sprite = UnityEditor.AssetDatabase.GetBuiltinExtraResource("UI/Skin/UIMask.psd");
#else
        image_vp.sprite = sprite_UIMask;
#endif
        image_vp.type = Image.Type.Sliced;

        //content
        GameObject obj_cont = new GameObject("Content");
        obj_cont.transform.SetParent(obj_vp.transform);
        obj_cont.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_cont = obj_cont.AddComponent();
        rect_cont.anchorMin = new Vector2(0f, 1f);
        rect_cont.anchorMax = Vector2.one;
        rect_cont.anchoredPosition = Vector2.zero;
        rect_cont.pivot = new Vector2(0.5f, 1f);
        rect_cont.sizeDelta = new Vector2(0f, 28f);

        //item
        GameObject obj_item = new GameObject("Item");
        obj_item.transform.SetParent(obj_cont.transform);
        obj_item.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_item = obj_item.AddComponent();
        rect_item.anchorMin = new Vector2(0f, 0.5f);
        rect_item.anchorMax = new Vector2(1f, 0.5f);
        rect_item.anchoredPosition = Vector2.zero;
        rect_item.sizeDelta = new Vector2(0f, 20f);

        Toggle toggle_item = obj_item.AddComponent();

        //item background
        GameObject obj_bg = new GameObject("Item Background");
        obj_bg.transform.SetParent(obj_item.transform);
        obj_bg.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_bg = obj_bg.AddComponent();
        rect_bg.anchorMin = Vector2.zero;
        rect_bg.anchorMax = Vector2.one;
        rect_bg.anchoredPosition = Vector2.zero;
        rect_bg.sizeDelta = Vector2.zero;

        Image image_bg = obj_bg.AddComponent();

        //item check mark
        GameObject obj_check = new GameObject("Item Checkmark");
        obj_check.transform.SetParent(obj_item.transform);
        obj_check.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_check = obj_check.AddComponent();
        rect_check.anchorMin = new Vector2(0f, 0.5f);
        rect_check.anchorMax = new Vector2(0f, 0.5f);
        rect_check.anchoredPosition = new Vector2(10f, 0f);
        rect_check.sizeDelta = new Vector2(20f, 20f);

        Image image_check = obj_check.AddComponent();
#if UNITY_EDITOR
        image_check.sprite = UnityEditor.AssetDatabase.GetBuiltinExtraResource("UI/Skin/Checkmark.psd");
#else
        image_check.sprite = sprite_checkmark;
#endif

        //item label
        GameObject obj_ilabel = new GameObject("Item Label");
        obj_ilabel.transform.SetParent(obj_item.transform);
        obj_ilabel.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_ilabel = obj_ilabel.AddComponent();
        rect_ilabel.anchorMin = Vector2.zero;
        rect_ilabel.anchorMax = Vector2.one;
        rect_ilabel.anchoredPosition = new Vector2(5f, -0.5f);
        rect_ilabel.sizeDelta = new Vector2(-30f, -3f);

        Text text_ilabel = obj_ilabel.AddComponent();
        float c = 50f / 255f;
        text_ilabel.color = new Color(c, c, c, 1f);
        text_ilabel.font = Resources.GetBuiltinResource("Arial.ttf");
        text_ilabel.text = "Option A";
        text_ilabel.alignment = TextAnchor.MiddleLeft;

        //scrollbar
        GameObject obj_bar = AddScrollbar(obj_temp, Vector2.zero, "Scrollbar");

        RectTransform rect_bar = obj_bar.GetComponent();
        rect_bar.anchorMin = new Vector2(1f, 0f);
        rect_bar.anchorMax = Vector2.one;
        rect_bar.pivot = Vector2.one;
        rect_bar.anchoredPosition = Vector2.zero;
        rect_bar.sizeDelta = new Vector3(20f, 0f);

        //set toggle
        toggle_item.targetGraphic = image_bg;
        toggle_item.graphic = image_check;

        //set scroll rect
        srect_tmp.content = rect_cont;
        srect_tmp.viewport = rect_vp;
        srect_tmp.verticalScrollbar = obj_bar.GetComponent();
        srect_tmp.verticalScrollbarVisibility = ScrollRect.ScrollbarVisibility.AutoHideAndExpandViewport;
        srect_tmp.verticalScrollbarSpacing = -3;

        //set drop down
        dropdown.targetGraphic = image_drop;
        dropdown.template = rect_temp;
        dropdown.captionText = text_label;
        dropdown.itemText = text_ilabel;
        List list = new List();
        list.Add("Option A");
        list.Add("Option B");
        list.Add("Option C");
        dropdown.AddOptions(list);
        dropdown.RefreshShownValue();

        obj_temp.SetActive(false);

        return obj_drop;
    }

InputField

 InputFieldを作成するScriptです。

    GameObject AddInputField(GameObject obj_parent, Vector2 pos, string field_name)
    {
        GameObject obj_field = new GameObject(field_name);
        obj_field.transform.SetParent(obj_parent.transform);
        obj_field.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_field = obj_field.AddComponent();
        rect_field.anchoredPosition = pos;
        rect_field.sizeDelta = new Vector2(160f, 30f);

        Image image_field = obj_field.AddComponent();
#if UNITY_EDITOR
        image_field.sprite = UnityEditor.AssetDatabase.GetBuiltinExtraResource("UI/Skin/InputFieldBackground.psd");
#else
        image_field.sprite = sprite_inputFieldBackground;
#endif
        image_field.type = Image.Type.Sliced;

        InputField inputfield = obj_field.AddComponent();
        inputfield.targetGraphic = image_field;

        //place holder
        GameObject obj_ph = new GameObject("Placeholder");
        obj_ph.transform.SetParent(obj_field.transform);
        obj_ph.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_ph = obj_ph.AddComponent();
        rect_ph.anchorMin = Vector2.zero;
        rect_ph.anchorMax = Vector2.one;
        rect_ph.anchoredPosition = new Vector2(0f, -0.5f);
        rect_ph.sizeDelta = new Vector2(-20f, -13f);

        Text text_ph = obj_ph.AddComponent();
        text_ph.text = "Enter text...";
        text_ph.font = Resources.GetBuiltinResource("Arial.ttf");
        text_ph.fontStyle = FontStyle.Italic;
        float c = 50f / 255f;
        text_ph.color = new Color(c, c, c, 0.5f);

        //text
        GameObject obj_text = new GameObject("Text");
        obj_text.transform.SetParent(obj_field.transform);
        obj_text.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_text = obj_text.AddComponent();
        rect_text.anchorMin = Vector2.zero;
        rect_text.anchorMax = Vector2.one;
        rect_text.anchoredPosition = new Vector2(0f, -0.5f);
        rect_text.sizeDelta = new Vector2(-20f, -13f);

        Text text_text = obj_text.AddComponent();
        text_text.font = Resources.GetBuiltinResource("Arial.ttf");
        text_text.supportRichText = false;
        text_text.color = new Color(c, c, c, 1f);

        inputfield.textComponent = text_text;
        inputfield.placeholder = text_ph;

        return obj_field;
    }

Panel

 Panelを作成するScriptです。

    GameObject AddPanel(GameObject obj_parent, string panel_name)
    {
        GameObject obj_panel = new GameObject(panel_name);
        obj_panel.transform.SetParent(obj_parent.transform);
        obj_panel.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_panel = obj_panel.AddComponent();
        rect_panel.anchorMin = Vector2.zero;
        rect_panel.anchorMax = Vector2.one;
        rect_panel.anchoredPosition = Vector2.zero;
        rect_panel.sizeDelta = Vector2.zero;

        Image image_panel = obj_panel.AddComponent();
#if UNITY_EDITOR
        image_panel.sprite = UnityEditor.AssetDatabase.GetBuiltinExtraResource("UI/Skin/Background.psd");
#else
        image_panel.sprite = sprite_background;
#endif        
        image_panel.type = Image.Type.Sliced;
        image_panel.color = new Color(1f, 1f, 1f, 0.5f);

        return obj_panel;
    }

Scroll View

Scroll Viewを作成するScriptです 。Scrollbarを作成するScriptが必要となります。

    GameObject AddScrollView(GameObject obj_parent, Vector2 pos, string view_name)
    {
        GameObject obj_sv = new GameObject(view_name);
        obj_sv.transform.SetParent(obj_parent.transform);
        obj_sv.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_sv = obj_sv.AddComponent();
        rect_sv.anchoredPosition = pos;
        rect_sv.sizeDelta = new Vector2(200f, 200f);

        ScrollRect scrollRect = obj_sv.AddComponent();

        Image image_sv = obj_sv.AddComponent();
#if UNITY_EDITOR
        image_sv.sprite = UnityEditor.AssetDatabase.GetBuiltinExtraResource("UI/Skin/Background.psd");
#else
        image_sv.sprite = sprite_background;
#endif        
        image_sv.type = Image.Type.Sliced;
        image_sv.color = new Color(1f, 1f, 1f, 0.5f);

        //view port
        GameObject obj_view = new GameObject("Viewport");
        obj_view.transform.SetParent(obj_sv.transform);
        obj_view.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_view = obj_view.AddComponent();
        rect_view.anchorMin = Vector2.zero;
        rect_view.anchorMax = Vector2.one;
        rect_view.pivot = new Vector2(0f, 1f);
        rect_view.anchoredPosition = Vector2.zero;
        rect_view.sizeDelta = new Vector2(17f, 17f);

        Mask mask_view = obj_view.AddComponent();
        mask_view.showMaskGraphic = false;

        Image image_view = obj_view.AddComponent();
#if UNITY_EDITOR
        image_view.sprite = UnityEditor.AssetDatabase.GetBuiltinExtraResource("UI/Skin/UIMask.psd");
#else
        image_view.sprite = sprite_UIMask;
#endif        
        image_view.type = Image.Type.Sliced;

        //content
        GameObject obj_content = new GameObject("Content");
        obj_content.transform.SetParent(obj_view.transform);
        obj_content.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_content = obj_content.AddComponent();
        rect_content.anchorMin = new Vector2(0f, 1f);
        rect_content.anchorMax = Vector2.one;
        rect_content.pivot = new Vector2(0f, 1f);
        rect_content.anchoredPosition = new Vector2(0f, 117f);
        rect_content.sizeDelta = new Vector2(0f, 300f);

        //scroll bar horizontal
        GameObject obj_horizon = AddScrollbar(obj_sv, Vector2.zero, "Scrollbar Horizontal");
        RectTransform rect_horizon = obj_horizon.GetComponent();
        rect_horizon.anchorMin = Vector2.zero;
        rect_horizon.anchorMax = new Vector2(1f, 0f);
        rect_horizon.pivot = Vector2.zero;
        rect_horizon.anchoredPosition = Vector2.zero;
        rect_horizon.sizeDelta = new Vector2(17f, 20f);

        //scroll bar vertical
        GameObject obj_vertical = AddScrollbar(obj_sv, Vector2.zero, "Scrollbar Vertical");
        RectTransform rect_vertical = obj_vertical.GetComponent();
        rect_vertical.anchorMin = new Vector2(1f, 0f);
        rect_vertical.anchorMax = Vector2.one;
        rect_vertical.pivot = Vector2.one;
        rect_vertical.anchoredPosition = Vector2.zero;
        rect_vertical.sizeDelta = new Vector2(20f, 17f);

        scrollRect.content = rect_content;
        scrollRect.viewport = rect_view;

        scrollRect.horizontalScrollbar = obj_horizon.GetComponent();
        scrollRect.horizontalScrollbarVisibility = ScrollRect.ScrollbarVisibility.AutoHideAndExpandViewport;
        scrollRect.horizontalScrollbarSpacing = -3;

        scrollRect.verticalScrollbar = obj_vertical.GetComponent();
        scrollRect.verticalScrollbar.direction = Scrollbar.Direction.BottomToTop;
        scrollRect.verticalScrollbarVisibility = ScrollRect.ScrollbarVisibility.AutoHideAndExpandViewport;
        scrollRect.verticalScrollbarSpacing = -3;

        return obj_sv;
    }

全てまとめたScript

以上のコードをまとめたScriptです。適当なゲームオブジェクトに以下のScriptをアタッチし、実行すればUI要素が作成されます。Inspectorでそれぞれの変数に画像を設定すれば、Build後も動作します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class CreateUIElements : MonoBehaviour {

    public Sprite sprite_background, sprite_UISprite, sprite_checkmark, sprite_dropDownArrow,
                    sprite_UIMask, sprite_inputFieldBackground, sprite_knob;

    // Use this for initialization
    void Start() {
        GameObject objCanvas = AddCanvas();
        AddText(objCanvas, Vector2.zero, "Text");
        AddImage(objCanvas, Vector2.zero, "Image");
        AddRawImage(objCanvas, Vector2.zero, "RawImage");
        AddButton(objCanvas, Vector2.zero, "Button");
        AddToggle(objCanvas, Vector2.zero, "Toggle");
        AddSlider(objCanvas, Vector2.zero, "Slider");
        AddScrollbar(objCanvas, Vector2.zero, "Scrollbar");
        AddDropdown(objCanvas, Vector2.zero, "Dropdown");
        AddInputField(objCanvas, Vector2.zero, "InputField");
        AddPanel(objCanvas, "Panel");
        AddScrollView(objCanvas, Vector2.zero, "Scroll View");
    }

    //Canvas
    GameObject AddCanvas()
    {
        GameObject obj = new GameObject("Canvas");
        obj.layer = LayerMask.NameToLayer("UI");
        Canvas canvas = obj.AddComponent();
        canvas.renderMode = RenderMode.ScreenSpaceOverlay;
        canvas.sortingOrder = 0;
        canvas.targetDisplay = 0;
        canvas.additionalShaderChannels = AdditionalCanvasShaderChannels.None;
        canvas.pixelPerfect = false;

        CanvasScaler canvas_scalar = obj.AddComponent();
        canvas_scalar.uiScaleMode = CanvasScaler.ScaleMode.ConstantPixelSize;
        canvas_scalar.scaleFactor = 1;
        canvas_scalar.referencePixelsPerUnit = 100;

        obj.AddComponent();

        RectTransform rect = obj.GetComponent();
        rect.anchorMin = Vector2.zero;
        rect.anchorMax = Vector2.one;
        rect.anchoredPosition = Vector2.zero;
        rect.sizeDelta = Vector2.zero;

        return obj;
    }

    //Text
    GameObject AddText(GameObject obj_parent, Vector2 pos, string text_name)
    {
        GameObject obj_text = new GameObject(text_name);
        obj_text.transform.SetParent(obj_parent.transform);
        obj_text.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_text = obj_text.AddComponent();
        rect_text.anchorMin = new Vector2(0.5f, 0.5f);
        rect_text.anchorMax = new Vector2(0.5f, 0.5f);
        rect_text.anchoredPosition = pos;
        rect_text.sizeDelta = new Vector2(160f, 30f);

        Text text = obj_text.AddComponent();
        text.font = Resources.GetBuiltinResource("Arial.ttf");
        text.text = "New Text";
        float c = 50f / 255f;
        text.color = new Color(c, c, c, 1f);

        return obj_text;
    }

    //Image
    GameObject AddImage(GameObject obj_parent, Vector2 pos, string image_name)
    {
        GameObject obj_image = new GameObject(image_name);
        obj_image.transform.SetParent(obj_parent.transform);
        obj_image.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_image = obj_image.AddComponent();
        rect_image.anchoredPosition = pos;
        rect_image.sizeDelta = new Vector2(100f, 100f);

        Image image = obj_image.AddComponent();
        image.color = Color.white;

        return obj_image;
    }

    //RawImage
    GameObject AddRawImage(GameObject obj_parent, Vector2 pos, string image_name)
    {
        GameObject obj_image = new GameObject(image_name);
        obj_image.transform.SetParent(obj_parent.transform);
        obj_image.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_image = obj_image.AddComponent();
        rect_image.anchoredPosition = pos;
        rect_image.sizeDelta = new Vector2(100f, 100f);

        obj_image.AddComponent();

        return obj_image;
    }

    //Button
    GameObject AddButton(GameObject obj_parent, Vector2 pos, string button_name)
    {
        GameObject obj_button = new GameObject(button_name);
        obj_button.transform.SetParent(obj_parent.transform);
        obj_button.layer = LayerMask.NameToLayer("UI");

        RectTransform rect_button = obj_button.AddComponent();
        rect_button.anchoredPosition = pos;
        rect_button.sizeDelta = new Vector2(160f, 30f);

        Image image_button = obj_button.AddComponent();
        image_button.color = Color.white;
#if UNITY_EDITOR
        image_button.sprite = UnityEditor.AssetDatabase.GetBuiltinExtraResource("UI/Skin/UISprite.psd");
#else
        image_button.sprite = sprite_UISprite;
#endif
        image_button.type = Image.Type.Sliced;

        Button button = obj_button.AddComponent