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

在不是从MonoBehaviour继承的脚本上,“不允许从MonoBehaviour构造函数调用Load

在不是从MonoBehaviour继承的脚本上,不允许从MonoBehaviour构造函数调用Load。

在Unity游戏开发中,MonoBehaviour是所有脚本的基类,它提供了许多用于游戏对象行为的函数和方法。Load函数是MonoBehaviour类中的一个函数,用于加载资源。

然而,在不是从MonoBehaviour继承的脚本上,即普通的C#脚本中,是不允许直接调用Load函数的。这是因为Load函数依赖于Unity引擎的上下文环境,只能在继承自MonoBehaviour的脚本中使用。

如果在不是从MonoBehaviour继承的脚本中需要加载资源,可以通过其他方式实现。例如,可以使用Resources类来加载资源,或者使用AssetBundle来进行资源的打包和加载。具体的实现方式可以根据项目需求和场景来选择。

总结起来,不是从MonoBehaviour继承的脚本上,不允许从MonoBehaviour构造函数调用Load函数,需要通过其他方式实现资源的加载。

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

相关·内容

Unity学习笔记-脚本

Unity脚本 简介 .cs的文本文件 类文件 脚本是附加在游戏物体上用于定义游戏对象行为指令的代码,需要继承自MonoBehaviour类。...附加在游戏对象的脚本类必须继承MonoBehaviour类 编译过程 编译运行过程 源代码--(CLS) -> 中间语言--(Mono Runtime) -> 机器码 脚本操作 修改脚本模板 1.在桌面找到...,但可能出现编码问题) 6.把它修改为自己需要的样子保存即可 脚本生命周期 简介 Unity脚本从唤醒到销毁的过程 消息:当满足某种条件Unity引擎自动调用的函数 样例源码 using System.Collections.../*格式: * * C#类: * 字段 * 属性 * 构造函数 * 方法 * * 脚本: * 字段 * 方法 */ public class Script生命周期 : MonoBehaviour...[Range(0, 100)] public int b; //在脚本中不要写构造函数 //***************初始阶段***************

70920

Unity 基础 - 脚本的生命周期

新建一个 C# 脚本,在 MonoDevelop 中打开脚本,我们会发现,只要在 Unity 中国年创建的脚本,默认都是集成自 MonoBehaviour的,像这种集成自MonoBehaviour的类或者脚本称之为运行时类...,继承自MonoBehaviour的类都不能手动进行实例化,当然在脚本中也可以创建一个类不继承MonoBehaviour。...脚本创建完成后,系统会默认创建两个方法,分别是Start ()和Update (),但是这两个方法并不是 MonoBehaviour 中定义的方法,这两个方法是通过反射调用的一些事件,会在特定的时间调用...这些方法定义了一个脚本从被加载到被销毁的过程中脚本的生命周期,除了这两个方法,还有几个方法,分别是 Awake(), OnEnable(),LateUpdate(),OnDisable(),OnDestroy..."); } // 脚本被销毁时调用一次 // 比如游戏中的怪物死亡之后,会掉落一些装备,可以在 Destroy 里写相应的逻辑 void OnDestroy (){

78430
  • Unity精华☀️ 面试官眼中的「设计模式」

    单例模式有两种写法,一种是每个脚本都写单例的代码 另一种是写好单例代码脚本,其他要实现单例模式的脚本继承它就好了。...在Awake生命周期后调用该脚本了 print(Test.Instance.gameObject.name); 2️⃣ 泛型单例模板 上面的方法需要在每个脚本都写代码,积少成多,也有些麻烦 毕竟是能省就省的...2、要实现单例的脚本继承 BaseWindow, public class Test : BaseWindow { } 3、其他方法便可调用单例脚本啦 print(Test.Instance.gameObject.name...(最后一个脚本是“一个被观察者”) 现在老弟们可能有疑问: 那观察者是不是在update获取信息,会不会很耗资源呢 不会的。...下方脚本的使用方法: ObserverMode放在场景物体上,其他脚本放在Assets中即可。

    9810

    零基础入门 24:Unity设计模式之单键模式

    在实际项目中,我们很多时候都需要用到单键,代码的类型标记为Static静态类型,只要能拿到类的地方,全局均可访问使用,从项目开始到结束,除非手动释放置空(依赖于GameObject的单键可以被标记跨场景删除...如下图,删除对MonoBehaviour的继承 ? 然后我们在创建一个提供给外部访问的实例静态对象,如下图,我又创建了一个静态类的实例对象,但是是Public的,用于提供给外部访问 ?...如上图,我在Instance的位置加了{ get{} },Instance本身并不是一个函数,而是一个变量,如果是函数都需要带括号()进行声明,这里是一个大括号{}声明的,这个大家可以区分一下,不要混淆...如下图,我们在调用SingleTonTest1的时候,是点出来一个Instance,即我们单键类提供给外部使用的唯一一个静态实例对象,再通过该实例对象,访问单键类的内部函数和变量。 ?...因为我们第二种演示方式需要依赖于GameObject,所以我们就不删除对MonoBehaviour的继承了,然后来完善对外部获取单例对象的实现。 ?

    90020

    同事看了我的代码惊呼:居然是这么在Unity中用单例的

    4、在不同的脚本中可以读取到DataManager单例对象读取的值 下面我们就来一步步实现单例对象下的DataManager。...❤ 三、实现单例模式的DataManager ❤ 3-1、定义单例对象 我们定义一个DataManager对象,继承于MonoBehaviour,具体代码如下: using System.Collections...属性Instance保证了它可以通过类进行访问,而不是通过实例化访问 2、继承MonoBehaviour类的实例是由Unity进行创建,不能通过构造函数创建 3、在Awake函数里面对Instance进行赋值..." " + DataManager.Instance.m_StationsAllInfo[i].STYPE + " "); } } } 将这个脚本拖到场景中的对象上...❤ 3-4、切换场景读取数据 我们新建两个场景:Index和Next,然后Index场景中的对象上挂载脚本ChangeScenes.cs脚本,代码如下: using System.Collections

    80510

    用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 在脚本中使用MonoBehaviour

    继上次分析了热更新的Demo后,这次来介绍如何在热更新代码中使用MonoBehaviour。 MonoBehaviour挂载到GameObject对象上的脚本的基类。...平常Unity开发时,简单的做法就是编写一个继承自MonoBehaviour的脚本,将它挂载到要操纵的GameObject上,赋予它各种行为。...当然,在某些大型项目中,可能并不推荐导出挂脚本的方式,但是本文旨在介绍如何在脚本中继承并编写MonoBehaviour,暂时忽略这个问题。...本章的目标:        用脚本创建一个MonoBehaviour。并挂载到某个物体上,在Start方法中使用协程加载 baidu 的首页的html,然后将它的html代码显示到文本框上。...如此,即实现了在脚本中使用MonoBehaviour。

    1.3K130

    【Unity3D】Unity 脚本 ③ ( C# 脚本的执行入口函数 | 获取当前游戏物体及物体名称 | 获取游戏物体的 Transform 组件数据 | UnityEngine 命名空间简介 )

    文章目录 一、 C# 脚本的执行入口函数 二、 获取当前游戏物体及物体名称 三、 获取游戏物体的 Transform 组件数据 四、UnityEngine 命名空间简介 一、 C# 脚本的执行入口函数...---- 在 C# 脚本中控制 游戏物体 GameObject 运动 , 要先获取该物体 , 然后 修改其 Transform 组件的属性 ; 在 游戏开始运行后 , 会自动执行 游戏物体 GameObject...上的 C# 组件代码 , 程序入口是 MonoBehaviour#Start() 函数 ; 在 C# 脚本中 , 主要的内容都在 Start() 函数 中实现 ; using System.Collections.Generic...} } 回到 Unity 编辑器 , 会自动编译 修改后的 C# 脚本 ; 该 C# 脚本 已经被附着到了 立方体上 , 在 Unity 编辑器 工具栏 中 , 点击 运行按钮 , 即可执行该...继承 MonoBehaviour 类 ; public class BehaviourScript : MonoBehaviour { } MonoBehaviour 类是在 UnityEngine

    1.3K10

    ILRuntime学习

    CLR绑定使跨域调用更快速,绑定后跨域调用的性能能达到slua的2倍左右(从脚本调用GameObject之类的接口) 支持跨域继承 完整的泛型支持 拥有Visual Studio的调试插件,可以实现真机源码级调试...(热更脚本中的类继承主工程脚本中的类) 注册适配器 appdomain.RegisterCrossBindingAdaptor(new InheritanceAdapter()); InheritanceAdapter.cs...//编写重定向方法对于刚接触ILRuntime的朋友可能比较困难,比较简单的方式是通过CLR绑定生成绑定代码,然后在这个基础上改,比如下面这个代码是从UnityEngine_Debug_Binding..., IList __mStack, CLRMethod __method, bool isNewObj) { //ILRuntime的调用约定为被调用者清理堆栈,因此执行这个函数后需要将参数从堆栈清理干净...注意事项 在热更DLL里面使用MonoBehaviour是可以做到的,但是并不推荐这么做 缺什么补什么 热更脚本使用AddComponent 重定向AddComponent unsafe

    1.1K30

    Unity3D之MonoBehaviour

    首先,在Unity中创建一个游戏对象并向其添加脚本时,这个脚本必须继承自MonoBehaviour类。这样,脚本就可以被附加到游戏对象上,并且可以通过执行其中的代码来实现与游戏对象相关的行为。...接下来,让我们详细了解一些MonoBehaviour类中的常用方法和属性: Awake():这个方法在脚本实例被创建时调用,它是初始化任何变量或游戏对象引用的好地方。...Start():这个方法在游戏对象的第一个Update循环之前调用,它经常用于初始化场景中的游戏对象。 Update():这个方法在每一帧都会调用一次,用于更新游戏对象的状态和行为。...OnEnable()和OnDisable():这两个方法在脚本被启用或禁用时调用,你可以在这里编写处理启用和禁用事件的代码。...此外,通过在脚本中暴露公共变量和属性,你可以在Unity编辑器中直接设置它们的值,从而使脚本更加灵活和可配置。

    39610

    unity-对象池

    简介 在游戏中经常会需要大量创建与销毁对象(比如子弹),而这样是很消耗性能的,如果我们事先创建一些对象把它们存起来,当需要时就把从里面取,当要销毁时就把它再放进去这样就不用重复大量创建与销毁对象了。...(Prefab)); } MonoBehaviour.print(Prefab); MonoBehaviour.print(pool.Count); } 然后还需要提供基础的Get...: 在Hierarchy面板中创建一个Empty取名为Pool,然后给他创建一个脚本取名为PoolScript。...ObjectPool(PlayerShadowPrefab); bulletPool = new ObjectPool(BulletPrefab,30,5); } } 然后需要在相应对象的控制脚本中...,将销毁的代码改为放入对象池(PutObject),将创建的代码改为从对象池中取出对象(GetObject)。

    47140

    用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 热更新Live2D

    然后使用ActionScript3热更新脚本系统将Live2D 的API导出给AS3脚本备用。如果您不了解这个热更新脚本,请看这里的链接和之前的系列教程。...现在将AS3 热更脚本的Unity插件导入Unity工程。 从菜单创建ActionScript3热更新工程。...:live2D的Demo中,角色的绘制是通过 MonoBehaviour 的 OnRenderObject 方法被调用时绘制的。...将摄像机的参数设置为如下参数: 现在可以在ActionScript3热更工程中写代码了。在as3工程中新建类Live2DDemo.as。 然后将如下代码写入as3热更脚本。...我们在脚本中使用的SimpleModel 继承自 之前C#工程里创建的Live2DBehaviour,它提供了onRenderObject方法,我们直接在脚本中override此方法即可。

    92230

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

    1.1 抽象行为 像往常一样,创建一个新的ShapeBehavior组件脚本并使其继承自MonoBehaviour。这是我们行为的基类,我们将通过具体行为(例如运动)进行扩展。...构造函数方法调用是最好的例子,但是我也认为AddComponent;已经足够显式了。 使用组件来隔离行为的好处是,我们可以在不需要它们时将其省略。这样我们就可以避免一些不必要的工作。...回收形状的最终目的是最大程度地减少内存分配,因此我们也必须找到一种回收形状行为的方法。 Unity组件无法从其游戏对象上分离,因此无法将它们放置在池中以便以后附加到其他游戏对象上。...相反,我们必须通过调用该类型的默认构造函数方法来创建一个常规对象实例。 ? 尽管在未定义显式构造函数方法的情况下,类仍然具有隐式公共默认构造函数方法,但这不能保证它们的一定存在。...这似乎可行,但是Unity会编译报错,说我们直接调用构造函数方法来创建新的资产实例,而不是使用ScriptableObject.CreateInstance。

    1.3K40

    一年前一篇关于学做unity游戏的草稿,好像是忘推送了

    OK的,在B站、油管搜一下基本上就有一大堆。...而实现这一切需要基于一个顶层的框架设计模式,Unity的脚本默认会继承MonoBehaviour这个通用类,他会使组件置于它的顶层框架模式中,里面会约定好组件在生命周期内的各种环节,并暴露相关回调方法:...我们大多在这个类中完成成员变量的初始化。 Start:仅在 Update 函数第一次被调用前调用。...FixedUpdate:当 MonoBehaviour 启用时,其 FixedUpdate 在每一固定帧被调用。 OnEnable:当对象变为可用或激活状态时此函数被调用。...OnDisable:当对象变为不可用或非激活状态时此函数被调用。 OnDestroy:当 MonoBehaviour 将被销毁时,这个函数被调用。

    23210

    Unity数据加密☀️ 一、使用VS将C#代码生成DLL文件

    注意: 所有我们需要通过 dll 调用的函数,都需要设为 公有(public static) 如果想要调用 Unity的API ,就需要导入 Unity 中的2个 DLL 到库中(否则不用)。...方法是: 右键解决方案的“引用”-->添加引用-->浏览-->上方地址 按住ctrl可同时选择这两个dll文件-->添加-->确定 2️⃣ 添加测试脚本 该脚本包含三个类: 继承MonoBehaviour...的类:可在dll文件下显示出该类,可将该类挂载到物体上 不继承MonoBehaviour:dll文件下不显示 using UnityEngine; namespace SARF { public...将下方的测试脚本挂载到Skode_00物体上,试试看!...,但继承了Mono,因此我们也可这样来调用不是静态的方法 GetComponent().Splice("字符串1", "----字符串2"); } } 输出结果

    25310

    Unity SKFramework框架(四)、Timer 时间类工具

    一、Countdown 定时器(倒计时) 获取一个定时器可以通过如下方式,计时类工具的运行依赖于携程,通过this获取定时器表示使用当前的MonoBehaviour开启携程,使用Timer获取定时器表示使用计时模块管理器的...,不同的是,定时器为倒计时,例如定时5秒,其值将会从5逐渐到0,到0后自动停止,计时器为正向计时,需要调用Stop手动终止,可以通过StopWhen为其设置停止的条件,当条件满足时,计时器将自动停止。...Chronometer chronometer1 = this.Chronometer(); Chronometer chronometer2 = Timer.Chronometer(true); 秒表在计时器的基础上增加了...Record记录的功能,当调用Shot方法时,会产生一条记录,记录包含context上下文(object类型)和time时间点: using UnityEngine; using SK.Framework...EveryFrame则表示每帧,可以在不是MonoBehaviour的脚本里实现Update的功能。 六、TimeUtility 功用

    1.3K20

    C#协程

    Unity在每一帧(Frame)都会去处理对象上的协程。Unity主要是在Update后去处理协程(检查协程的条件是否满足) ?...life.png 整理得到: 通过设置MonoBehaviour脚本的enabled对协程是没有影响的,但如果 gameObject.SetActive(false) 则已经启动的协程则完全停止了,即使在...也就说协程虽然是在MonoBehvaviour启动的(StartCoroutine)但是协程函数的地位完全是跟MonoBehaviour是一个层次的,不受MonoBehaviour的状态影响,但跟MonoBehaviour...脚本一样受gameObject 控制,也应该是和MonoBehaviour脚本一样每帧“轮询” yield 的条件是否满足。...迭代器方法运行到 yield return 语句时,会返回一个expression表达式并保留当前在代码中的位置。 当下次调用迭代器函数时执行从该位置重新启动。

    1.9K20

    【Unity3D】Unity 游戏画面帧更新 ( 游戏帧相关概念 | MonoBehaviour#Update() 帧更新方法 | 帧更新时间统计 | 设置游戏更新帧率 )

    60 fps , 果 FPS 很低 , 游戏画面就会很卡 ; 二、 MonoBehaviour#Update() 帧更新方法 ---- 在 Unity 的 C# 脚本中的 MonoBehaviour#...Update 函数调用 , 游戏帧更新 "); } } 执行过程中 , 打印日志统计 999+ , 打印了很多数据 ; 三、 帧更新时间统计 ---- 在 MonoBehaviour#Update...() 帧更新方法 中执行 Debug.Log("C# 脚本 Update 函数调用 , 游戏帧更新 "); 代码 , 打印日志 , 日志的时间力度为秒 , 但是游戏的帧率一般是 每秒 几十帧 , 一秒钟就会调用几十次...: 每一帧的间隔从几毫秒到几百毫秒 , 大部分在个位数毫秒值间隔 ; 这个与操作系统时间片分配有关 , 没有办法精准控制 ; 四、 设置游戏更新帧率 ---- 在 Unity 中 无法精准的控制 游戏画面...: 在游戏画面更新时 , 大致按照 5 fps 的帧率进行更新 , 也就是间隔 200 ms , 这个间隔不是精确值 , 而是一个近似值 , 可能是 0.2000016 秒 , 也可能是 0.1999822

    1.1K20

    用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 使用原型链和EventTrigger

    原型链是JS的必备,作为ECMAScript4,原型链也是支持的。 特别说明,ActionScript3是支持完整的面向对象继承支持的,原型链只在某些非常特殊的情况下使用。...本文说明,如何在脚本中,动态监听 EventTrigger。我们将这篇文章中介绍的使用不可热更的C#代码做的监听,改写为ActionScript3实现。...如果不会创建,请参考这里 在HotFixDemoScene1上添加一个Image。 image.png 本次代码需要使用 RectTransformUtility 这个类。...* EventTrigger类型没有公开构造函数,因此API导出时,不会为他创建在脚本中继承的接口。 * 这里我们可以用原型链来对它进行扩展。 * 包外代码只会执行一次。...*/ var t:* = UGUIEventTriggerTool.Get(gameObject); /** * 调用在原型链上定义的方法,给Drag事件添加处理函数

    1.3K60

    网络游戏简单化!PUN插件了解一下?(Unity3D)

    PhotonStream 负责写入(和读取)网络对象的状态,每秒钟几次,脚本需要继承接口IPunObservable,它定义了OnPhotonSerializeView。...Remote Procedure Calls (RPC)使你可以调用”networked GameObjects”上的方法,对由用户输入等触发的不常用动作很有用。...一个RPC会被在同房间里的每个玩家在相同的游戏对象上被执行,所以你可以容易地触发整个场景效果就像你可以修改某些GameObject。...作为RPC被调用的方法必须在一个带PhotonView组件的游戏对象上。该方法自身必须要被[PunRPC]属性标记。...而不是直接调用目标方法,调用PhotonView.RPC()并提供想要调用的方法名称: PhotonView photonView = PhotonView.Get(this); photonView.RPC

    3.1K20
    领券