小编use*_*292的帖子

使用协同程序加载网格 - 等到完成,

我场景中的一个脚本涉及创建立方体网格.这个过程需要相当长的时间,而且我一直在尝试实施它,而不会导致Unity变得反应迟钝.

目前的代码 - 有效 - 您可以在生成网格时观察.但是,场景中的其他脚本正在同时执行其任务并导致异常(它们正在访问尚未创建的网格上的切片).

下面的脚本是唯一具有'Awake'功能的脚本 - 其他脚本在第一个脚本完成唤醒之前执行'Update'和'OnGUI'.

 GridGenerator.cs

public GameObject[,] tiles = new GameObject[Constants.BOARD_WIDTH, Constants.BOARD_HEIGHT]; 
   // Run a double loop to create each tile.
    void Awake () 
    {
        StartCoroutine(doSetup());
    }

    IEnumerator doSetup()
    {
        yield return StartCoroutine (loadLevel());
        DoOtherStuff();
    }

    IEnumerator loadLevel()
    {   
        for (int i = 0; i < Constants.BOARD_WIDTH; i++)             
        {
            for (int j = 0; j < Constants.BOARD_HEIGHT; j++) 
            {
                tiles[i,j] = newTile();
                yield return(0);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

如何让doOtherStuff()方法等到协同例程完成?

我尝试过一个布尔切换(冻结统一)我尝试过使用锁(这不起作用)

或者有更有效的方法吗?

编辑:代码在生成网格后成功完成OtherStuff().除了doOtherStuff()之外,将网格的引用传递给单独的类.尝试在Update方法中访问网格时,单独的类会抛出异常.这表明,在GridGenerator.cs中的Awake完成之前,将调用update方法.

c# coroutine unity-game-engine

6
推荐指数
1
解决办法
365
查看次数

来自 c# 的 TextArea 中的新行

我正在开发 ASP.NET 应用程序。文本是从数据库中获取的,其中换行符存储为'\r\n',我将文本放入启用了多行的文本框中。但是,我似乎无法在文本框中换行

string description = description.Replace("\\r\\n", "<br/>");
lblDescriptionV.Text = description;
Run Code Online (Sandbox Code Playgroud)

我尝试将换行符替换为:<br/>, &#13;&#10;&#10;但该值只是打印到文本框中。所以它会读作:"Line 1<br/>line 2"

c# asp.net

0
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×2

asp.net ×1

coroutine ×1

unity-game-engine ×1