Unity3D: Horizontal Layout Group - add cells in runtime

TrablaUnity3D: Horizontal Layout Group - add cells in runtime


Unity3D Horizontal Layout Group - add cells in runtime tutorial

Solving Overview:

1. We need to create Container for cells ( e.g. panel )
2. Container: Add component Horizontal Layout Group
3. Container: Add script with public property for cell prefab
code to create (clone) instances from prefab in runtime

4. We need to create cell prefab - e.g. UI.Image or UI.Button
5. Cell Prefab: Add Layout Element component

6. Set reference in Container Script to Cell Prefab

Solving:

1. Create new Unity 2D project

Unity3D Horizontal Layout Group - add cells in runtime tutorial 1

Right mouse click on "Main Camera" ( "Hierarchy" view ), select UI -> Panel
- Unity will create objects - "Canvas"  with child object "Panel"

Unity3D Horizontal Layout Group - add cells in runtime tutorial 2

Unity3D Horizontal Layout Group - add cells in runtime tutorial 3



2. Click on "Panel" - in "Inspector" view click "Add Component"
- select "Layout"->"Horizontal Layout Group"
Unity3D Horizontal Layout Group - add cells in runtime tutorial 4

Unity3D Horizontal Layout Group - add cells in runtime tutorial 5


3. Create script for panel - select "panel" - Add Component -> "New Script" type script name
e.g. "PanelScript"

Unity3D Horizontal Layout Group - add cells in runtime tutorial 6

Unity3D Horizontal Layout Group - add cells in runtime tutorial 7

Open script in Code Editor and paste following code:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.Events;

public class PanelScript : MonoBehaviour {

    //We will put here reference to prefab in Editor
    public GameObject CellPrefab;


    // Use this for initialization
    void Start () {

        for (int i=0; i < 6; i++) {

            GameObject newCell = Instantiate (CellPrefab) as GameObject;

            //If you add script to cell prefab
            // you can init public vars like this
            //CellScript cellScript = newCell.GetComponent<CellScript>();
            //cellScript.value1 = 1;
            //cellScript.value2 = "trololo";
            //etc.


            newCell.transform.SetParent(  this.gameObject.transform,  false);

        }


    }

    // Update is called once per frame
    void Update () {

    }
}



Unity3D Horizontal Layout Group - add cells in runtime tutorial 8


4. Right mouse click on "Panel"  -  UI->Image
 Now download image below and put it into "Assets" ("Project" view ) folder ( drag-n-drop image into assests )

Unity3D Horizontal Layout Group - add cells in runtime tutorial 9


5. Select "Image" in "Hierarchy" view and in "Inspector"
find field "Image"->"Source Image".
Drag and drop image from assets into field "Source Image" ( it displays "None(Sprite)" )

Unity3D Horizontal Layout Group - add cells in runtime tutorial 10

Unity3D Horizontal Layout Group - add cells in runtime tutorial 11

Unity3D Horizontal Layout Group - add cells in runtime tutorial 12



6.   Select "Image" and in  Inspector click "Add Component" - select "Layout"->"Layout Element"

Unity3D Horizontal Layout Group - add cells in runtime tutorial 13

Unity3D Horizontal Layout Group - add cells in runtime tutorial 14


Unity3D Horizontal Layout Group - add cells in runtime tutorial 15


7. In "Hierarchy" view  select and drag-n-drop "Image" element into "Project"->"Assests"
- Unity will create prefab "Image".
Delete "Image" object from "Hierarchy" - left click + delete button

Unity3D Horizontal Layout Group - add cells in runtime tutorial 16



8. Set reference in Container Script (Panel) to Cell Prefab (Image).

Unity3D Horizontal Layout Group - add cells in runtime tutorial 17


Unity3D Horizontal Layout Group - add cells in runtime tutorial 18

9. Run

Unity3D Horizontal Layout Group - add cells in runtime tutorial 19


No comments:

Post a Comment