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

在不是从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; //脚本中不要写构造函数 //***************初始阶段***************

63420

网络游戏简单化!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

2.7K20

Unity 基础 - 脚本生命周期

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

73430

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

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

85120

同事看了我代码惊呼:居然是这么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

52310

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

继上次分析了热更新Demo后,这次来介绍如何在热更新代码中使用MonoBehaviourMonoBehaviour挂载到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.1K10

【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

93220

ILRuntime学习

CLR绑定使跨域调用更快速,绑定后跨域调用性能能达到slua2倍左右(脚本调用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

1K30

Unity3D之MonoBehaviour

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

24110

用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

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.2K20

unity-对象池

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

41440

C#协程

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

1.8K20

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

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

17710

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

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

86830

【Unity3D】Unity 游戏画面帧更新 ( 游戏物体 GameObject 移动 | 借助 Time.deltaTime 进行匀速运动 )

游戏物体 GameObject 移动 , 则需要在 MonoBehaviour#Update() 函数 中 , 不断修改 物体 Transform#localPosition 坐标位置 ; MonoBehaviour...= 50; MonoBehaviour#Update() 函数 中 , 进行如下画面更新操作 , 每次更新画面帧时 , 计算 游戏场景 中 游戏物体 运行位置 , 然后设置给游戏物体 ; 首先...Update 函数调用 , 游戏帧更新 , 当前游戏时间 : " + Time.time + " , 本次更新距离上次更新时间差 : " + Time.deltaTime); //..., 每次 MonoBehaviour#Update() 函数 中 , 累加一个固定值 , 但是 该函数调用间隔不是固定 , 因此该运动不是匀速运动 ; 如果将该运动设置为匀速运动 , 可以 设置一个固定速度值..., 根据 通过 Time.deltaTime 代码 获取 本次更新与一次更新时间差 , 计算出本次应该移动多少距离 ; 将固定速度值设为 1 米 / 秒 ; 完整代码如下 : using System.Collections

70820

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

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

1.3K40

Unity3d+Gameframework:entity实体代码分析,基于StarForce

–》挂载Entity脚本继承了于MonoBehaviour) /// /// 创建实体。...EntityInstanceObject 实体实例对象,不会继承自MonoBehavior,实体资源加载成功后调用创建 GameFramework.Entity.EntityManager.LoadAssetSuccessCallback...EntityLogic public abstract class EntityLogic : MonoBehaviour 实体逻辑基类 实体挂载好Entity,后Entity初始化时挂载逻辑处理脚本...public abstract class Entity : EntityLogic,此实体与gf实体不是同样东西(不在同个命名空间中) 创建时,通过逻辑类型就传递下去 public static...,碰撞检测 放入到回收池,什么时候彻底去除引用 Weapon 增加武器实体,为什么能挂载人身上 武器挂载 创建完成后,挂载主角身上 StarForce.Weapon.OnShow protected

32030
领券