【Unity3D日常BUG】Unity3D中出现“unsafe code 不安全的代码”的错误时的解决方法

时间:2022-10-03 09:02:14
  • QQ群:1040082875

大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。

一、前言

今天遇到一个错误,就是提示使用了不安全的代码,如下图所示:

【Unity3D日常BUG】Unity3D中出现“unsafe code 不安全的代码”的错误时的解决方法


这应该是插件或者自己脚本中使用了不安全unsafe的代码。

二、什么是unsafe

2-1、什么是unsafe不安全代码

默认情况下,C#是不支持 指针 的,unsafe 关键词用于在C#表示不安全的上下文,如果想要在C#中进行任何和指针相关的操作,就必须配合unsafe关键词使用。

在公共语言运行时(CLR)中,不安全代码是指无法验证的代码。

C# 中的不安全代码不一定是危险的,只是 CLR 无法验证该代码的安全性。因此,CLR 将仅执行完全信任的程序集中的不安全代码。

如果你使用不安全代码,你应该负责确保代码不会引发安全风险或指针错误。

2-2、解决报错

在菜单栏找到​​File→Build Setting→Player Setting→Other Setting​​下的Allow unsafe Code选项:

【Unity3D日常BUG】Unity3D中出现“unsafe code 不安全的代码”的错误时的解决方法


勾选该选项后,我们就可以在Unity中使用unsafe关键词了。

2-3、如何使用unsafe

用于修饰变量,给变量用上指针:

public class Testunfofa : MonoBehaviour
{
void Start()
{
Fun();
}

private unsafe void Fun()
{
int i = 3;
int* x = &i;
Debug.Log((int)x);
}
}

注意:unsafe 的使用虽然能让我们在C#中使用指针,但是会存在安全风险和稳定性风险,如果没有特殊需求,请尽量避免在C#中使用 unsafe。