Tav*_*dos 5 c# unity-game-engine visual-studio
我刚开始在我的Unity游戏中使用委托和事件来在适当的时候更新标签,而不是每帧更新标签,尽管大多数时候没有发生变化.
为了确保,这是一个静态事件调用
public static event OnSomething onSomething;
Run Code Online (Sandbox Code Playgroud)
实际上有听众,我用
if (onSomething!= null) {
onSomething();
}
Run Code Online (Sandbox Code Playgroud)
这只是一个方便的问题,但Visual Studio 14(2015)说,这可以简化为
onSomething?.Invoke();
Run Code Online (Sandbox Code Playgroud)
我也更喜欢,因为我熟悉nullables并想使用它们,但如果我确实将代码更改为建议,Unity表示
error CS1644: Feature `null propagating operator' cannot be used, because it is not part of the C# 4.0 language specification.
Run Code Online (Sandbox Code Playgroud)
那么有没有办法让Unity项目使用C#的v4.0,或者我可以告诉Visual Studio,该项目使用旧版本的C#,所以它会停止这些建议吗?
编辑:很少澄清:我不一定要使用任何特定的C#版本.我想使用最新版本来使用这些"酷炫的新功能",只要没有主要原因不使用最新版本.
我不一定要使用任何特定的C#版本.我想使用最新版本来使用这些"酷炫的新功能",只要没有主要原因不使用最新版本.
Unity 没有 正式支持.NET 3以上的任何内容.虽然,他们目前正在研究这个问题.他们希望首先支持.NET 4,然后支持其他.NET版本.
你能在Unity中使用最新的C#吗?
是!
在butbucket上有一个专门用于此项目的项目,称为"Unity C#5.0和6.0集成".你可以在这里得到它.它允许您完成此操作,并在该站点上发布使用它所需的说明.
这适用于iOS,Android,Windows和MacOS,但我不会用它来发布我的游戏只是因为它没有得到官方支持.
至于你的尝试使用
onSomething?.Invoke();
Run Code Online (Sandbox Code Playgroud)
我建议你不要在你的Unity中使用它.如果你养成使用它的习惯,你会遇到很多问题.
这是因为Unity使用自定义相等运算符 for Components
和GameObjects
.如果您尝试在Component
或上执行此操作,它将无法工作GameObject
.你只会为自己创造很多问题.这里是一个的例子,这里的另一个原因是在Unity工作时要远离零传播了.
编辑:
2017年团结现在支持 4.6,这将使此功能工作,但我还是会建议你测试和试验了很多本,以确保不存在大的问题,如这期间它释放你的比赛前的运行时间.
归档时间: |
|
查看次数: |
5924 次 |
最近记录: |