Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Operand ambiguity occurs when referencing built-in Vector types via arithmetic and comparison operators

Abierto
#177 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
42/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
csharp, unity

Línea de trabajo

Comienza localizando las definiciones de los tipos VectorX y floatX, así como sus implementaciones existentes de conversiones y operadores. Reproduce el ejemplo de Input.mousePosition y float3 y, a continuación, verifica que las expresiones aritméticas y de comparación relevantes se resuelvan sin ambigüedad y produzcan el tipo de resultado previsto de Unity.Mathematics.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Given the following code snip:

static float3 lastMouseSpinViewPos;
var delta = Input.mousePosition - lastMouseSpinViewPos;

The following compiler error occurs:

Operator '-' is ambiguous on operands of type 'Vector3' and 'float3'

The reason is that the compiler doesn't know if it should implicitly convert the first operand to float3, or implicitly convert the second operand to Vector3.

Expected Behavior

My expectation is that Unity.Mathematics types should assume priority in this case: the first operand is converted to float3 and the result type is a float3. I'm not sure if there's a valid case for expecting behavior favoring Vector3, and if there were, it could be achieved by using explicit (Vector3) cast or type definition. Seeking a legacy Vector3 result is an edge case and is well-suited to be delegated to an explicit cast condition.

Cause of Problem

  • Input.mousePosition is a unity built-in property or field, so its type is Vector3
  • There are no explicit arithmetic operator implementations for VectorX types and floatX types.

Proposed solution

For the sake of streamlining interoperability with Unity built-in class Vector types, I think it makes sense to provide explicit implementations of arithmetic and comparison operators, like so:

        public static float3 operator +(Vector3 l, float3 r)  { return (float3)l + r; }
        public static float3 operator -(Vector3 l, float3 r)  { return (float3)l - r; }

        public static float3 operator +(float3 l, Vector3 r)  { return l + (float3)r; }
        public static float3 operator -(float3 l, Vector3 r)  { return l - (float3)r; }
Workaround

Add explicit typecast in all situations, like so:

static float3 lastMouseSpinViewPos;
var delta = (float3)Input.mousePosition - lastMouseSpinViewPos;
Lenguaje dominante
C#
Estrellas
1.4k
Forks
159
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de Unity-Technologies/Unity.Mathematics

Todos los issues de Unity-Technologies/Unity.Mathematics

Issues similares

Más issues de C#

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.