Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IBuildTask 是否可以支持 async await 这类的异步操作 #441

Open
su9257 opened this issue Jan 8, 2025 · 8 comments
Open

IBuildTask 是否可以支持 async await 这类的异步操作 #441

su9257 opened this issue Jan 8, 2025 · 8 comments
Labels
enhancement New feature or request

Comments

@su9257
Copy link

su9257 commented Jan 8, 2025

项目中自定义的 IBuildTask 节点会进行资源的批处理,因为文件太多,同步操作会出现卡死的情况,是否可以支持async await 这类的异步操作?

@gmhevinci gmhevinci added the enhancement New feature or request label Jan 8, 2025
@gmhevinci
Copy link
Collaborator

请问是哪个Task造成卡死的呢?

@su9257
Copy link
Author

su9257 commented Feb 6, 2025

请问是哪个Task造成卡死的呢?

项目中自定义实现的 Yooasset中的 IBuildTask,所以需要能异步等待的方式执行

@gmhevinci
Copy link
Collaborator

是在构建前,还是构建完成后的节点呢?Editor下异步会影响到Jenkins这类外部调用。如果是纯页面的方式倒是没有影响。如果不涉及多线程,可以通过Editro的Progress进度页面显示进度条。

@su9257
Copy link
Author

su9257 commented Feb 7, 2025

是在构建前,还是构建完成后的节点呢?Editor下异步会影响到Jenkins这类外部调用。如果是纯页面的方式倒是没有影响。如果不涉及多线程,可以通过Editro的Progress进度页面显示进度条。

整个构件过程是在mac上通过Jenkins这类外部执行的,出现卡死的 IBuildTask 是在构建前,看源码是一个for循环执行了所有的 IBuildTask 任务,其中有一个自定的 IBuildTask 任务 是单帧内对项目中的美术资源和Prefab进行批处理,因为耗时太久会出现卡死(不确定是不是就不应该这么用)。为了避免卡死准备分帧执行,也就出现了:看看能否异步执行的需求。

@gmhevinci
Copy link
Collaborator

是在构建前,还是构建完成后的节点呢?Editor下异步会影响到Jenkins这类外部调用。如果是纯页面的方式倒是没有影响。如果不涉及多线程,可以通过Editro的Progress进度页面显示进度条。

整个构件过程是在mac上通过Jenkins这类外部执行的,出现卡死的 IBuildTask 是在构建前,看源码是一个for循环执行了所有的 IBuildTask 任务,其中有一个自定的 IBuildTask 任务 是单帧内对项目中的美术资源和Prefab进行批处理,因为耗时太久会出现卡死(不确定是不是就不应该这么用)。为了避免卡死准备分帧执行,也就出现了:看看能否异步执行的需求。

是不是处理的资源量非常大,耗时非常久,表面是卡死,实际内部一直在处理。有通过编辑器来执行构建脚本,测试过吗?可以增加一个progress界面,看下进度

@su9257
Copy link
Author

su9257 commented Feb 8, 2025

是在构建前,还是构建完成后的节点呢?Editor下异步会影响到Jenkins这类外部调用。如果是纯页面的方式倒是没有影响。如果不涉及多线程,可以通过Editro的Progress进度页面显示进度条。

整个构件过程是在mac上通过Jenkins这类外部执行的,出现卡死的 IBuildTask 是在构建前,看源码是一个for循环执行了所有的 IBuildTask 任务,其中有一个自定的 IBuildTask 任务 是单帧内对项目中的美术资源和Prefab进行批处理,因为耗时太久会出现卡死(不确定是不是就不应该这么用)。为了避免卡死准备分帧执行,也就出现了:看看能否异步执行的需求。

是不是处理的资源量非常大,耗时非常久,表面是卡死,实际内部一直在处理。有通过编辑器来执行构建脚本,测试过吗?可以增加一个progress界面,看下进度

处理的美术资主要是Prefab,1000个左右(有修改和创建),确定卡死,是发现在网页上查看构建进度,最少30 min 都没有进度上的变化,而且这种卡死只会出现在mac上,window上是没有的,理论上这个时间已经远远超过了实际应该用到的时间。
目前通过别的方式处理,避免在 IBuildTask.Run 中执行大量耗时操作。

@gmhevinci
Copy link
Collaborator

根据描述很像Unity编辑器的BUG

@su9257
Copy link
Author

su9257 commented Feb 8, 2025

根据描述很像Unity编辑器的BUG

有可能是的,后续并没有做更详细的测试。
当然如果能异步执行 IBuildTask.Run 话,IBuildTask 是可以做更多事情的,例如等待其它 子并行任务 的执行。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants