栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Unity3D

【解决】Assertion failed on expression: ‘ShouldRunBehaviour()’

Unity3D 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【解决】Assertion failed on expression: ‘ShouldRunBehaviour()’

开发平台:Unity
编程平台:Visual Studio 2020以上
使用语言:C#

问题描述
描 述
原意Assertion failed on expression: ‘ShouldRunBehaviour()’
翻译对表达内容的断句上产生错误:‘ShouldRunBehaviour()’

注:该问题可能不会影响实际项目中操作。


解决方案

  应用【ExecuteInEditMode】特性。Unity对一部分方法调用只允许其在Runtime模式下运行使用,对Editor模式下不支持允许。尽管该方法仍可能运行出结果。

更多参考外网分析:

  • masakami 网站
  • forum 论坛 1105351
  • forum 论坛 318517
  • Unity Issuletraker
案例:StartCoroutine 协程

  开发过程中,寄希望于Editor模式下直接解析数据内容。有应用到协程开发内容(省略DLL引用)。但在实际问题反馈中,认为Unity Editor模式不支持协程使用 。如下所示:

[ExecuteInEditMode]
public class Example : Monobehaviour
{
	public void RequestData()
	{
		StartCoroutinue(nameof(DatabaseRequest));
	}
	
	IEnmerator DatabaseReqeust() { yield return ... }
}

  应用UnityEditor API对组件内容扩充,使其允许Editor模式下直接使用(省略DLL引用)。如下所示:

[CustomeEditor(typeof(Example))]
public class EditExample : Editor
{
	private Example _example;
	private void OnEnable() { _example = target as Example; }
	public override void OnInspectorGUI()
	{
		base.OnInspectorGUI();
		
		if(GUILayout.Button("请求数据内容"))
		{
			_example.RequsetData();
		}
	}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/900485.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号