无法隐式转换类型'UnityEngine.Vector2?'到'UnityEngine.Vector2'

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法隐式转换类型'UnityEngine.Vector2?'到'UnityEngine.Vector2'相关的知识,希望对你有一定的参考价值。

这可能看起来像一个noob问题,但我正在使用gamespark与团结。我正在这个包中发送vector2:

data.SetVector2(1, new Vector2(1.0f, 1.0f, 1.0f)); 

我从数据包中得到它,如:

Vector2 a = _packet.Data.GetVector2 (1);

但我收到以下错误:无法隐式转换类型UnityEngine.Vector2?到UnityEngine.Vector2。

答案

'?'意味着它是一种“可空”的类型。要转换为Vector2,请执行

Vector2 a = _packet.Data.GetVector2(1).Value;

以下是MS中可空类型的链接:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/nullable-types/

Nullable类型还可以选择使用HasValue属性检查值是否为null。如果你不确定GetVector2实际上是否返回了一个有效值,你应该检查HasValue并做出适当的回应。

以上是关于无法隐式转换类型'UnityEngine.Vector2?'到'UnityEngine.Vector2'的主要内容,如果未能解决你的问题,请参考以下文章

unity 一直提示 无法将类型“string”隐式转换为“UnityEngine.UI.Text”

无法转换类型“UnityEngine.Component”

UnityEngine.Object类的隐式bool转换,何时为null问题。

unity C# 法通过引用转换...将类型“UnityEngine.GameObject”转换为“UnityEngine.Rigidbody”

从 Unity 中的脚本中获取对按钮的引用

编译器错误信息: CS0029: 无法将类型“int []”隐式转换为“string”