gpt4 book ai didi

c# - Unity Visual Studio C#版本同步

转载 作者:太空狗 更新时间:2023-10-29 23:05:29 25 4
gpt4 key购买 nike

我刚开始在我的 Unity 游戏中使用委托(delegate)和事件来在适当的时候更新标签,而不是每帧都更新标签,尽管大多数时候不会发生任何变化。

为了确保,静态事件调用

public static event OnSomething onSomething;

居然有监听器,我用

if (onSomething!= null) {
onSomething();
}

这只是一个方便的问题,但 Visual Studio 14 (2015) 说,这可以简化为

onSomething?.Invoke();

我也更喜欢它,因为我熟悉可空值并想使用它们,但是如果我确实根据建议更改代码,Unity 说

error CS1644: Feature `null propagating operator' cannot be used, because it is not part of the C# 4.0 language specification.

那么有没有办法让 Unity 项目使用 v4.0 的 C#,或者我可以告诉 Visual Studio,该项目使用旧版本的 C#,所以它停止这些建议?

编辑:小澄清:我不一定要使用任何特定的 C# 版本。我想尽可能使用最新版本来使用这些“很酷的新功能”,只要没有不使用最新版本的主要原因。

最佳答案

I don't neccessarily want to use any specific C# version. I want to use the newest version possible to use these "cool new features", as long as there is no major reason not to use the newest version.

Unity 官方支持.NET 3之上的任何东西。虽然,他们目前正在为此努力。他们希望首先支持 .NET 4,然后再支持其他 .NET 版本。

您可以在 Unity 中使用最新的 C# 吗?

是的!

butbucket 上有一个专门用于此的项目,名为 “Unity C# 5.0 和 6.0 集成”。可以领取here .它可以让您完全做到这一点,使用它所需的说明已发布在该网站上。

这适用于 iOS、Android、Windows 和 MacOS,但我不会使用它来发布我的游戏,因为它不受官方支持。


至于你尝试使用

onSomething?.Invoke();

我建议您根本不要在 Unity 中使用它。如果你养成使用它的习惯,你会遇到很多问题。

之所以这样是因为Unity使用了custom equality operator对于 ComponentsGameObjects。如果您尝试在 ComponentGameObject 上执行此操作,它将不起作用。你只会为自己制造这么多问题。 Here是一个和here的例子这是在 Unity 中工作时远离 Null 传播的另一个原因。

编辑:

现在是 Unity 2017 supports 4.6 将允许此功能工作,但我仍然建议您对此进行大量测试和试验,以确保没有大问题,例如 this。在使用它发布游戏之前的运行时。

关于c# - Unity Visual Studio C#版本同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42956797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com