首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

unity(脚本检查器3)中出错:不允许从ScriptableObject构造函数调用GetBool

在Unity中,ScriptableObject是一种可用于存储和管理数据的特殊类型。它是一种可序列化的对象,可以在不依赖于场景或游戏对象的情况下保存和加载数据。

根据给出的错误信息,"unity(脚本检查器3)中出错:不允许从ScriptableObject构造函数调用GetBool",这个错误是由于在ScriptableObject的构造函数中调用了GetBool方法导致的。

在Unity中,ScriptableObject的构造函数是在编辑器中调用的,而不是在运行时调用的。因此,ScriptableObject的构造函数中不能使用任何需要在运行时才能访问的方法或属性。

GetBool方法是一个运行时方法,它可能依赖于场景中的其他对象或组件的状态。因此,在ScriptableObject的构造函数中调用GetBool方法是不允许的,因为在编辑器中无法提供运行时所需的上下文。

要解决这个错误,您可以将GetBool方法的调用移动到ScriptableObject的其他方法中,例如Awake或OnEnable方法。这些方法在运行时调用,并且可以访问场景中的其他对象和组件。

总结:

  • ScriptableObject是一种可用于存储和管理数据的特殊类型。
  • ScriptableObject的构造函数是在编辑器中调用的,不能使用需要在运行时才能访问的方法或属性。
  • GetBool方法是一个运行时方法,不能在ScriptableObject的构造函数中调用。
  • 可以将GetBool方法的调用移动到ScriptableObject的其他方法中,例如Awake或OnEnable方法。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Unity基础教程系列(九)——形状行为(Modular Functionality)

相反,我们必须通过调用该类型的默认构造函数方法来创建一个常规对象实例。 ? 尽管在未定义显式构造函数方法的情况下,类仍然具有隐式公共默认构造函数方法,但这不能保证它们的一定存在。...这似乎可行,但是Unity会编译报错,说我们直接调用构造函数方法来创建新的资产实例,而不是使用ScriptableObject.CreateInstance。...最后,添加一个OnEnable方法来检查ShapeBehavior是否被回收。如果是的话,让它自我循环。当通过ScriptableObject创建资产时,将调用此方法。...这是通过将:ScriptableObject代码放在#if UNITY_EDITOR和#endif编译指令之间的单独一行来完成的。 ? if UNITY_EDITOR如何工作?...同样的方法也可以用于检查Unity版本以及代码针对哪个目标平台进行编译。 同样,我们只需要编辑的is回收和OnEnable代码,因此也要使该位具有条件。 ?

1.3K40
  • 为虚幻引擎开发者准备的Unity指南

    预制件可以直接 Project 窗口拖放到 Scene 视图中,也可以在脚本通过引用生成。更新预制件资源后,所有场景的该预制件的全部实例都会更新。...注意:如果不需要 Update() 函数,最好脚本删除该函数。这类似于在 Unreal 中将 CanActorEverTick 设置为false,有助于避免每帧不必要的调用。...https://docs.unity3d.com/Manual/class-ScriptableObject.html 但在 Unity ScriptableObject 也可以实例化为资源。...在两种引擎,频繁调用在世界查找对象的函数都可能会产生很高的性能成本,因此不应在每帧都被调用的代码中使用。...然后,可以将输入操作绑定到函数,以使代码能够对输入做出反应。Unity 也使用类似的系统:代码可以使用 **Input.GetAxis()**函数定义的 Axes 读取输入。

    31210

    Unity面试篇】Unity 面试题总结甄选 |Unity进阶篇 | ❤️持续更新❤️

    Unity3d的碰撞和触发的 区别? 碰撞是触发的载体,而触发只是碰撞身 上的一个属性。...当Is Trigger=false时,碰撞根据物理引擎引发 碰撞,产生碰撞的效果,可以调用 OnCollisionEnter/Stay/Exit函数; 当Is Trigger=true时,碰撞被物理引擎所忽略...Unity3d的物理引擎,有几种 施加力的方式,分别描述出来 rigidbody.AddForce; rigidbody.AddForceAtPosition; 都在 rigidbody系列函数。...当你有一个预制体,上面挂了一个存有不变数据的MonoBehaviour 脚本时,每次我们实例化预制体时都将产生一次数据拷贝,这时我们可以使用ScriptableObject对象来存储数据,然后通过引用来访问预制体的数据...在编辑模式下,我们可以在编辑和运行时将数据保存到ScriptableObject,因为保存ScriptableObject需要用到编辑空间个脚本,但是在开发模式下不能使用ScriptableObject

    2.3K22

    Unity性能调优手册4:资源优化,Texture,Mesh,Material,Animation,ParticleSystem,Audio,ScriptableObject

    模型检查的这个选项在默认情况下是禁用的。 如果你不需要在运行时访问网格,你应该禁用它。...皮肤权重的数量可以在“Project Settings ->Quality ”下的“Other”设置 这个设置也可以脚本动态调整。...在这种情况下,你需要使用AnimationClipPlayable或停用Animator并调用Animator.Update 。两者都需要编写自己的脚本,但后者比前者更容易实现。...性能的角度来看,以下两点尤其需要注意 • Resources folder • StreamingAssets folder 通常情况下,Unity只包含场景、材料、脚本等引用的对象。...问题是无法程序中进行检查。您必须直观地检查不必要的文件,这很耗时。向这些文件夹添加文件时要小心。 然而,随着项目的进展,存储文件的数量将不可避免地增加。

    1.3K32

    Unity面试篇】Unity 面试题总结甄选 |Unity基础篇 | ❤️持续更新❤️

    Unity3d脚本唤醒到销毁有着一套比较完整的生命周期,列出系统自带的几个重要的方法。...生命周期图览: 某位大哥自己画的图:Unity 生命周期 2. Unity3D的碰撞和触发的区别? 答:碰撞是触发的载体,而触发只是碰撞身上的一个属性。...答:两个物体都必须带有碰撞Collider,其中一个物体还必须带有Rigidbody刚体。 4. 简述Unity3D支持的作为脚本的语言的名称?...注意:仅能从主线程访问Unity3D的组件,对象和Unity3D系统调用。C#中有lock这个关键字,以确保只有一个线程可以在特定时间内访问特定的对象 40....在编辑模式下,我们可以在编辑和运行时将数据保存到ScriptableObject,因为保存ScriptableObject需要用到编辑空间个脚本,但是在开发模式下不能使用ScriptableObject

    1.9K23

    了解加权随机化算法,在游戏中进行概率计算,抽取SSR五星卡牌指日可待

    此处也可以直接使用 AddOrUpdateWeight 代码添加概率及概率对象,省去第一步在Unity的监视面板配置概率的步骤。...---- 三、插件核心代码 下面具体演示了插件的使用方法,一种是使用ScriptableObject保存我们的概率及概率对象。另一种是直接在类配置,直接调用。...调用GetNext()配置的概率获取对象 GameObject item = CurrentObjRandomizer.GetNext(); Debug.Log...本文介绍的 概率插件WeightedRandomization 是一种最直接简单的方法我们配置的概率获取概率对象。...插件非常轻量,只有几个脚本构成,在用到概率的时候直接将插件资源包拖入项目中即可一键调用。 后面有机会也想尝试几种复杂的游戏概率模型用来学习使用。

    1K20

    Unity游戏开发】跟着马三一起魔改LitJson

    JsonMapper 它的作用是负责将Json转为Object或者Object转为Json,起到一个中转的作用,在里面有一系列的规则去告诉程序如何对Object进行序列化和对Json内容反序列化。...内置的基本 Type 对应的序列化、反序列化规则,并且在JasonMapper的构造中有 RegisterBaseImporters 和 RegisterBaseExporters 这两个函数负责去注册这些具体的导出导入规则行为...Vector2是Struct类型,它最主要的是x和y这两个成员变量,观察一下Vector2的构造,在构造里面传入的也是 x 、y这两个 float 类型的参数,因此我们只要想办法将它按照一定的规则转为...为了更加规整和结构分明,马三把这些对拓展类型支持的代码都统一放在了一个名为 UnityTypeBindings 的类,为了能够实现在Unity启动时就注册相关导出规则,我们可以在静态构造调用一下...使用方法很简单,直接把Plugins/LitJson目录下所有的cs脚本放到你的工程即可。

    4K42

    Unity编辑】UnityEditor多重弹出窗体与编辑窗口层级管理

    而新研发的这款编辑是直接嵌入在Unity,作为Unity的拓展编辑来使用的。当然在开发,马三也遇到了种种的问题,不过还好,在同事的帮助下都一一解决了。...二、如何在Unity编辑创建可重复的弹出窗体   众所周知,如果想要在Unity创建出一个窗体,一般需要新建一个窗体类并继承自EditorWindow,然后调用EditorWindow.GetWindow...图3:反编译结果1   重载的几个 GetWindow 方法在最后都调用了 GetWindowPrivate 这个方法,我们再看一下对于 GetWindowPrivate 这个方法,Unity是如何实现它的...都是继承自 ScriptableObject,自然要通过ScriptableObject.CreateInstance来创建实例,而不是直接通过构造来创建。...通过重写每个界面的OnFocus函数为如下形式,手动调用EditorWindowMgr.FoucusWindow()让管理去自动管理界面层级: private void OnFocus() {

    4K30

    Unity游戏开发】AssetBundle杂记--AssetBundle的二三事

    准备资产 【Unity3D技术文档翻译】第1.3篇 创建 AssetBundles 【Unity3D技术文档翻译】第1.4篇 AssetBundle 依赖关系 【Unity3D技术文档翻译】第1.5篇...(在AssetBundle存储和加载二进制数据) Unity5.4 Assetbundles官方说明八(数据安全方面的处理) Unity5.4 Assetbundles官方说明九(资源包包含脚本文件...如何做资源管理和增量更新 Unity资源处理机制(Assets/WWW/AssetBundle/...)读取和加载资源方式详解 Unity3D实现按资源名称自动化命名打包AssetBundle Unity...打包函数     我们调用BuildPipeline.BuildAssetBundle来进行打包:     BuildPipeline.BuildAssetBundle有5个参数,第一个是主资源,第二个是资源数组...,对开发效率有很大的影响,所以在开发我们使用Resource和Bundle兼容的方式     首先将资源管理封装到一个ManagerBundleLoad资源还是Resource里面Load资源

    3.4K31

    unity2d3d结合_unity3d脚本编程与游戏开发

    3>Console 3脚本生命周期 1>简介 2>初始阶段 3>物理阶段 4>输入事件 5>游戏逻辑 6>场景渲染 7>结束阶段 4、调试 1>使用Unity编辑 2>使用VS 3>使用MonoDevelop...通过菜单设置修改默认的脚本编辑: Edit ——Preferences——External Tools——External Script Editor 3>Console 3脚本生命周期 1>...简介 Unity脚本唤醒到销毁的过程 消息:当满足某种条件Unity引擎自动调用函数 也称为必然事件 2>初始阶段 Awake 唤醒: 当物体载入时立即调用1次;常用于在游戏开始前进行初始化,可以判断当满足某种条件执行此脚本...: 当脚本销毁或附属的游戏对象被销毁时被调用 OnApplicationQuit 当程序结束: 应用程序退出时被调用 4、调试 1>使用Unity编辑 将程序投入到实际运行,通过开发工具进行测试...项目面板中导入:Visual Studio 20xx Tools 调试步骤: (1)在可能出错的行添加断点 (2)菜单栏——调试——附加Unity调试程序 (3)在UnityPlay场景 Update

    1.6K20

    Unity基础教程系列——对象管理(二)对象多样化(Fabricating Shapes)

    为了让数组在检查显示并被Unity保存,可以添加SerializeField属性给它。 ? 字段出现在检查之后,将所有三个形状预置拖放到它上面,这样对它们的引用就会被添加到数组。...只读字段或属性只能分配默认值,或在构造函数方法中分配。但不巧的是,我们不能在实例化Unity对象时使用构造函数方法。所以只能使用这样的方法。...如果我们是较旧的保存文件读取数据,那么只需要获取立方体即可。 ? 3 材质多样性 除了改变衍生对象的形状,我们还可以改变它们的组成。目前,所有的形状使用相同的材质,这是Unity的默认材质。...由于GameDataReader不是Unity对象类,我们可以使用只读属性,只给它一个get部分。这些属性可以通过构造函数方法初始化。为此,我们必须添加版本作为构造函数参数。 ?...Unity不允许这样做。相反,我们可以在使用块之前检查它是否存在。如果没有,我们就在那一点创建它。 ?

    1.8K10

    Unity游戏开发】SDK接入与集成——小白入门篇

    (重要的事情说三遍,网上不少教程都是针对Unity老版的教程,没有提到要删除这个classes.jar包,结果在Unity 5.x打包肯定会出错)。出错截图如下所示。 ? ?   ...并且编写一个脚本(MessageHandler.cs即是我创建的脚本), 在其中编写用来调用Jar包的C#方法,然后将按钮和这些函数绑定(Unity基本操作,不赘述了)。 ? ?   ...AndroidJavaObject 类的一些常用方法及功能如下表所示: AndroidJavaObject 构造函数,根据类名返回AndroidJavaObject对象 Call 调用Android代码的非静态方法...需要注意的是此时的AndroidJavaClass构造函数传递的字符串就不是 "com.unity3d.player.UnityPlayer" 了。...下面这段代码就是用来回调Unity函数的: /**供Unity调用函数,此函数会回调指定的一个Unity的方法,完成数据的双向交互 * @param str */

    5K55

    Unity Metaverse(五)、Avatar数字人换装系统的实现方案

    如何将RPM编辑的Avatar导入到Unity 本专栏的第一篇内容中有介绍RPM的使用以及将Avatar导入Unity的过程,下面简要说明。...Avatar Loader可以将我们自定义的Avatar模型导入到Unity: Avatar Loader 在RPM的Avatar Hub,选择我们想要导入到Unity的Avatar,通过Copy...导出fbx 如何提取模型的Mesh网格、Material材质、及Texture贴图 Mesh网格和Material材质的提取可以直接在Skinned Mesh Renderer组件获取并通过实例化并调用...: Materials Location •将所有法线贴图的Texture Type改为Normal map,并检查法线贴图是否用在相应材质球上: Normal map •调用自定义的编辑方法,提取资产...提取网页的图片资源可以使用ImageAssistant图片助手,一款Chrome浏览中用于嗅探、分析网页图片、图片筛选、下载等功能的扩展程序,当然也可以在Edge浏览中去使用,地址:Image

    3.2K50

    Unity通用渲染管线(URP)系列(十四)——多相机(Camera Blending & Rendering Layers)

    在哪里可以找到默认的UI着色源代码? 转到Unity的档案下载,找到所需的Unity版本,然后任一下拉菜单中选择“内置着色”。...因为这纯粹是下拉菜单的装饰,所以我们只需要对Unity编辑执行此操作。因此,将CustomRenderPipelineAsset转换为局部类。 ? 然后为其创建一个覆盖属性的仅编辑脚本资产。...它返回一个字符串数组,我们可以在静态构造函数方法创建它。我们将以与默认名称相同的名称开头,不同之处在于Layer字和数字之间的空格。 ? 这会稍微更改渲染层标签。...我们不能将检查放在另一个GetLighting函数吗? 可以,这样会减少代码量。但是,在这种情况下,着色编译不会生成分支。如果不需要的话,灯光总是会被计算和丢弃。...现在,我们可以CustomLightEditor删除DrawRenderingLayerMask方法,然后调用RenderingLayerMaskDrawer.Draw。 ?

    8.7K22

    Unity3D】Unity 脚本 ④ ( 游戏物体 GameObject 的坐标 | 修改 游戏物体 GameObject 的本地坐标 )

    Transform#position 属性 获得 ; 本地坐标 : 调用 Transform#localPosition 属性 获得 ,本地坐标 就是在 Inspector 检查 显示的 Transform..., 调用 this.transform.localPosition 代码 , 获取的 本地坐标 类型是 Vector3 类型 , 这是一个 三维向量 , 由 3 个 float 浮点型的数值组成 ;...如果要设置 游戏物体 GameObject 的 本地坐标 , 则为其赋值一个 Vector3 类型的 三维向量 , 使用构造函数创建 Vector3 实例对象代码如下 : new Vector3(4.0f...C# 脚本 附着的 游戏物体 GameObject 移动到 本地坐标 (4.0f, 4.0f, 4.0f) 位置 , 也就是 Inspector 检查 设置 (4.0f, 4.0f, 4.0f)...编辑 , 执行前 , 立方体的坐标是 ( 0 , 0 , 0 ) , 执行前的状态如下 : 点击 Unity 编辑 工具栏右侧的 执行按钮 , 执行后立方体的坐标是 (4.0f, 4.0f

    1.7K20

    Unity面试刷题库

    答:在构造函数如果有public修饰的静态构造函数时会报:“静态构造函数不允许出现访问修饰符”,如果什么修饰符都不加的话不会报错,静态构造函数一般是起初始化作用。...8.Unity3d的碰撞和触发的区别?...注意:1.虽然支持多线程,但是仅能从主线程访问Unity3D的组件,对象和Unity3D系统调用,所以如果使用的话需要把组件的数值传到开启的新线程。...答:Awake –>OnEnable->Start OnEnable在同一周期可以反复地发生 31.Unity3d脚本唤醒到销毁有着一套比较完整的生命周期,请列出系统自带的几个重要的方法。...33.移动摄像机的动作放在哪个系统函数,为什么放在这个函数? 答:LateUpdate,在每帧执行完毕调用,它是在所有Update结束后才调,比较适合用于命令脚本的执行。

    4.1K12

    Unity-AssetsResources and AssetBundles

    如果每次 Unity 编辑打开的时候都要执行导入过程的话会是 Unity 编辑变得特别没有效率。 作为解决方案,Unity 会讲资产导入后的结果缓存到 Libraray 文件夹。...在Plugins子文件夹外的C#脚本会编译到Assembly-CSharp.dll,而Plugins子文件夹内的脚本会编译到Assembly-CSharp-firstpass.dll。...后三种时间花费一般时不变的,不论是现成结构或者存储中加载。...但是读取源数据的时间与层次结构的组件和游戏对象成线性增加的关系,当然还要乘以读取源数据的速度。 在当前的全平台中,内存读取数据要更快比硬盘读取数据。...Unity编译:这个API会将整个AssetBundle加载进内存,而不像磁盘上读取所有字节,使用AssetBundle.LoadFromMemoryAsync。 3.3.3.

    1.8K20
    领券