Visuial Studio 打开 Unity 脚本时,脚本继承MonoBehaviour暂时失效为白色的解决方法

问题描述:

u3d2020.3.47f1c1   vs2019

之前C#脚本A好好的,今天改了一行代码,在储存,就出现这个问题了,变白之后,新增的一行代码不生效,之前的代码照常运行。

如下办法都不能解决我的问题:

1.删掉asser同目录library;

Unity开发win10软件系列问题1: MonoBehaviour变白_monobehaviour白色-CSDN博客

2.vs里选择最近解决方案

Visuial Studio 打开 Unity 新建脚本时,新脚本继承MonoBehaviour暂时失效为白色的解决方法_monobehaviour是白色的-CSDN博客

3.最终办法和这个相近

[Unity Bug]Monobehaviour在VS中是白色的_monobehaviour是白色的-CSDN博客

我解决办法:

u3d-edit-preferences-external Tools-External Script Editor之前选择的就是vs2019,现在下拉选择

Open By file Extention 然后等走下进度;关掉vs 和u3d;

open u3d double click random  c#,我这边直接调用了vs且MonoBehaviour变白(之前坏的不是他),然后关掉vs;

u3d-edit-preferences-external Tools-External Script Editor下拉选择

vs2019然后等走下进度,双击之前坏脚本A,问题解决;

Unity的ILRuntime是一个用于运行元数据处理的库,它允许动态创建、修改和执行.NET类型。然而,由于ILRuntime本身的设计,它是基于字节码而不是源代码层次的,所以通常不支持直接继承官方的MonoBehaviour基类,因为MonoBehaviour是Unity引擎预先编译的一部分。 如果你需要在ILRuntime中实现类似MonoBehaviour的行为,可以考虑以下几种策略: 1. **组合设计模式** (Composition): 使用继承MonoBehaviour的子类实例作为组件的数据成员,通过外部逻辑控制其行为。例如,你可以创建一个自定义的脚本组件,内部引用一个ILRuntimeObject,然后手动实现你需要的功能。 ```csharp public class MyCustomComponent : MonoBehaviour { private IMyBehaviour ilrObject; // 假设IMyBehaviour是你的ILRuntime行为接口 void Start() { ilrObject = new MyIlRuntimeBehaviour(); // 创建并初始化ILRuntime行为对象 } public void MyMethod() => ilrObject.MyMethod(); } ``` 2. **事件驱动** (Event Driven): 如果你想让ILRuntime对象响应 MonoBehaviour 中的方法,你可以创建事件系统,并在 ILRuntime 对象上添加事件处理器。 3. **Bridge层** (Bridge Layer): 另一种方法是在两者之间建立一个“桥”,比如在游戏对象上有一个行为管理器,这个管理者接受来自ILRuntime的行为指令,然后转换成对MonoBehaviour的实际操作。 无论哪种方法,记住ILRuntime的主要目标是提供动态性和灵活性,而非完全替换Unity的游戏对象体系结构。因此,在实际应用,你可能需要权衡性能开销和代码复杂度。如果可能的话,考虑在编辑器阶段处理这些行为,只在必要才引入ILRuntime。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LuckyDog阿祥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值