utilizo este código
var hg = gameObject.GetComponent<ThirdPersonCharacter>();
hg.m_MoveSpeedMultiplier = 0.5f;
y me da este error
'ThirdPersonCharacter' does not contain a definition for 'm_MoveSpeedMultiplier' and no accessible extension method 'm_MoveSpeedMultiplier' accepting a first argument of type 'ThirdPersonCharacter' could be found (are you missing a using directive or an assembly reference?)
A ver si alguien me puede alumbrar
Cita de: Jose Manuel Unity date=1548865852utilizo este código
var hg = gameObject.GetComponent<ThirdPersonCharacter>();
hg.m_MoveSpeedMultiplier = 0.5f;
y me da este error
'ThirdPersonCharacter' does not contain a definition for 'm_MoveSpeedMultiplier' and no accessible extension method 'm_MoveSpeedMultiplier' accepting a first argument of type 'ThirdPersonCharacter' could be found (are you missing a using directive or an assembly reference?)
A ver si alguien me puede alumbrar
Metete en el script, fijate si tiene ese miembro. Si lo tiene fijate
que tan accesible es (viendo el mensaje se puede ver que no es public, por lo menos el "
m_MoveSpee....")
, quizás sea un getter, por ejemplo:
float m_moveSpeedMultiplier;
public float MovespeedMultiplier
{
get
{
return m_moveSpeedMultiplier;
}
}
y no puedas modificarlo, solo obtenerlo ... no creo, no tendría mucho sentido.
O quizás esté en la forma de getter/setter (seguramente) y puedas modificarlo tocando "MoveSpeedMultiplier" en vez de "
m_MoveSpeedMultiplier".
float m_moveSpeedMultiplier;
public float MovespeedMultiplier
{
get
{
return m_moveSpeedMultiplier;
}
set
{
m_moveSpeedMultiplier = value;
}
}
Saludos
Muchas gracias
lightbug por tu pronta respuesta. Esta asi:
[SerializeField] float m_MoveSpeedMultiplier = 1f;
entiendo que es una variable pública. Lo que no se es si se puede modificar.
Cita de: Jose Manuel Unity date=1548868785entiendo que es una variable pública
No, no es publica es privada pero está serializada por el editor, es decir que aparece en el inspector, las variables publicas también aparecen en el inspector.
Eso está así porque está pensado para que la modifiques cuando estás en la escena editando cosas, no en runtime.
Podés aagregarle justo abajo lo que te puse arriba o directamente hacer esto:
[SerializeField] float m_MoveSpeedMultiplier = 1f;
public void SetMoveSpeedMultiplier(float multiplier)
{
m_MoveSpeedMultiplier = multiplier;
m_MoveSpeedMultiplier = Mathf.Clamp( m_MoveSpeedMultiplier , 0 , Mathf.Infinity );
}
y desde afuera usas:
var thirdPersonController = gameObject.GetComponent<ThirdPersonCharacter>();
thirdPersonController.SetMoveSpeedMultiplier(0.5f);
Eres una maquina. Muchas gracias por tu excelente explicación.
saludos
Si está resuelto, marcadlo como BestAnswer, pls...
Cita de: pioj date=1549053030Si está resuelto, marcadlo como BestAnswer, pls...
Como se hace??