Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

343
Visualizações
Hacer referencia usando & y desreferenciar usando * en Unity

Esta es una pregunta de referencia de variable C en Unity y no una pregunta de referencia de gameobject.

Necesito obtener la dirección de newVar , como en &newVar . ¿Es esto posible en Unity? He intentado varias búsquedas y no puedo encontrar una respuesta.

Hay documentación sobre cómo hacer esto en C pero necesito hacerlo en Unity.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Nunca he usado Archimatix, pero mirando el manual que veo en línea, parece que funcionará. En C#, las lambdas capturan variables por referencia, por lo que puede hacer que los parámetros lean el resultado de una lambda para obtener una variable actualizada.

 public class ParamUpdater: MonoBehaviour { [SerializeField] AXModel model; List<AXParameter> params; List<Func<float>> paramGetters; // Use this for initialization void Awake () { // Establish refernces to AXModel parameters. Params = new List<AXParameter>(); if (model != null) { Params.Add(model.getParameter("Engine.Param0")); Params.Add(model.getParameter("Engine.Param1")); // add more params here } paramGetters = new List<Func<float>>(); // create default getters for (int i = 0 ; i < Params.Count ; i++) { paramGetters.Add(()=>0f); } } public void ConfigureParamGetter(int index, Func<float> getter) { paramGetters[index] = getter; } public void Recalculate() { for(int i = 0 ; i < Params.Count ; i++) { float curVal = paramGetters[i](); // Maybe a different method would be better? // online API is very lacking... Params[i].initiatePARAMETER_Ripple_setFloatValueFromGUIChange(curVal); } model.autobuild(); recalculate(); } }

Y luego, por ejemplo, en una clase donde vive un flotante de interés, llame a ConfigureParamGetter con un Func que devuelve la variable. Como se mencionó anteriormente, la captura se realiza por referencia, por lo que siempre estará actualizada cuando se llame en ParamUpdater .

 public class ImportantClass: MonoBehaviour { [SerializeField] ParamUpdater paramUpdater; float importantFloat; // Use Start to call after ParamUpdater initializes in Awake void Start() { paramUpdater.ConfigureParamGetter(0, ()=>importantFloat); } // for example void Update() { importantFloat = Time.time; } // called whenever void DoRecalculate() { paramUpdater.Recalculate(); } }

Avíseme si cometí algún error de sintaxis o cualquier otro problema, puedo intentar solucionarlo.

over 4 years ago · Santiago Trujillo Relatório

0

Necesita punteros y la palabra clave del código inseguro .

Las clases en C# ya son referencias, por lo que no sirve de mucho convertirlas en punteros. Es decir, un GameObject ya es un tipo de referencia y ya funciona como un puntero.

Para otras cosas, como los tipos no administrados , puede usar códigos y punteros no seguros.

Entonces puedes hacer cosas como char* pc = &c;

También recuerde "Permitir código inseguro" con Archivo > Configuración de compilación... => Haga clic en Configuración del reproductor => Configuración de código => Permitir código 'inseguro' .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda