1. 程式人生 > >Unity Scroll View在使用佈局的情況下自動更改大小,聊天室佈局

Unity Scroll View在使用佈局的情況下自動更改大小,聊天室佈局

問題:

很多時候我們需要在一個scroll view裡面,content的大小隨內容的大小變換,同時content還要使用layout group來使下面保持一定的規格排列,比如上面的vertical layout group,再同時,還需要下面的子物體的大小隨自己的子內容來動態改變

例如聊天框 便捷任務框

之前我想只用這兩種方式來解決,後來發現,使用layout group之後子物體不能再使用content size fitter,雖然在editor狀態是沒問題的,但是動態生成之後,會產生布局混亂的狀態,後來我用程式碼計算寬度手動設定,但是這種方法太蠢,再查詢了很多資料後,找到了一種完美的解決方案

    public GameObject obj;

	// Use this for initialization
	void Start () {
        GameObject obj1 = Instantiate(obj, transform);
        obj1.GetComponentInChildren<Text>().text = "asddddddddddddddddddddddddddddddddddd";
        GameObject obj2 = Instantiate(obj, transform);
        obj2.GetComponentInChildren<Text>().text = "asddddddddddddddddddddddddddddddddddasdfsafadssaaaaaaaaaad";
        GameObject obj3 = Instantiate(obj, transform);
        obj3.GetComponentInChildren<Text>().text = "asddddddddddddd";
        GameObject obj4 = Instantiate(obj, transform);
        obj4.GetComponentInChildren<Text>().text = "asddddddddddddddd4444444444444444444444444ssssssssssssssssssssdddddddddddddddddddd";
        GameObject obj5 = Instantiate(obj, transform);
        obj4.GetComponentInChildren<Text>().text = "asddddddddddddddddddd";
        GameObject obj6 = Instantiate(obj, transform);
        obj4.GetComponentInChildren<Text>().text = "asddddd\n一二三\nCoder";
    }

實現效果,類似於聊天室