public static MyBoardTexture getInstance()
 {
     if (instance == null)
     {
         instance = new MyBoardTexture();
     }
     return(instance);
 }
Esempio n. 2
0
    private void RenderRandomModels()
    {
        if (bInit)
        {
            return;
        }
        bInit = true;

        // 地板材质
        // ------
        Texture2D texture = MyBoardTexture.getInstance().GetTexture() as Texture2D;

        for (int i = 0; i < _Board.transform.childCount; i++)
        {
            GameObject tempObject = _Board.transform.GetChild(i).gameObject;
            tempObject.GetComponent <MeshRenderer>().material.SetTexture("_BaseColorMap", texture);
            tempObject.GetComponent <MeshRenderer>().material.SetFloat("_Smoothness", Random.Range(0.1f, 1.0f));
        }
        texture = null;

        // 天空盒
        // ------
        SkyBoxObj = Instantiate(MySkyBoxs.getInstance().GetSkyBoxs()) as GameObject;


        // 加载模型文件
        // ------
        List <string> modelNames = Models.getInstance().GetModelNames();

        for (int i = 0; i < modelNames.Count; i++)
        {
            float z = Random.Range(-20.0f, 20.0f);
            float y = 40.0f;
            float x = Random.Range(-20.0f, 20.0f);

            GameObject temp = Instantiate(Models.getInstance().GetModelsByName(modelNames[i])) as GameObject;

            // 随机位置
            temp.transform.localScale = new Vector3(500.0f, 500.0f, 500.0f);
            temp.transform.position   = new Vector3(x, y, z);
            temp.transform.Rotate(new Vector3(Random.Range(0.0f, 90.0f), Random.Range(0.0f, 90.0f), Random.Range(0.0f, 90.0f)));
            temp.transform.parent = this.transform;

            // 添加组件
            temp.AddComponent <MeshCollider>();
            temp.GetComponent <MeshCollider>().convex = true;
            temp.AddComponent <Rigidbody>();
            temp.GetComponent <Rigidbody>().constraints = RigidbodyConstraints.FreezePositionX;
            temp.AddComponent <BVisible>();
        }

        // 添加摄像机和灯光 并渲染图片
        // ------
        StartCoroutine(RenderPic());
    }