Something I’ve found confusing is how Unity uses C# which is a strongly typed language, yet it allows things such as float3 and Vector3 to be interchanged, are those just compiler exceptions in order to make it easier to program with either one? Or is there something else going on that I just have yet to read?
Then at the same time it doesn’t allow the operation (float3 - vector3) or similar operations. Anyone have any insight on this?
Implicit conversion is a standard C# language feature. The C# compiler tells you if there’s ambiguity in the user code, like if types A and B only have binary addition operators A+A and B+B, and A and B have implicit conversions both ways, so A+B is ambiguous between A+(A)B and (B)A+B. Of course, explicitly casting one of the operands fixes the ambiguity.