CallBacks

my callback doesn't always work
for exemle
state.AddCallback("a", CreateWat);
state.AddCallback("b", CreateWat1);
state.AddCallback("c", CreateWat2);
of these callbacks sometimes execute one or two, rarely three at once execute
i have list prefabs
static class ListWeap
{
public static GameObject[] weaponBases = new GameObject[]
{
Resources.Load<GameObject>("Bazooka1-Faceted"),
Resources.Load<GameObject>("Capsule"),
Resources.Load<GameObject>("Cylinder"),
Resources.Load<GameObject>("rifle-Faceted"),
Resources.Load<GameObject>("Sphere")
};
}

and

public class CubeBehavior : Bolt.EntityEventListener<ICubeState>
{
public GameObject[] WeaponObjects;
public override void Attached()
{
state.SetTransforms(state.CubeTransform, transform);
if (entity.IsOwner)
{
for (int i = 0; i < state.WeaponArray.Length; ++i)
{
state.WeaponArray.WeaponId = i;
state.WeaponArray.WeaponAmmo = Random.Range(50, 100);
}
state.a = ListWeap.weaponBases[Random.Range(0, ListWeap.weaponBases.Length)].GetComponent<WeaponBase>().id;
state.b = ListWeap.weaponBases[Random.Range(0, ListWeap.weaponBases.Length)].GetComponent<WeaponBase>().id;
state.c = ListWeap.weaponBases[Random.Range(0, ListWeap.weaponBases.Length)].GetComponent<WeaponBase>().id;
state.WeaponActiveIndex = -1;
}

state.AddCallback("a", CreateWat);
state.AddCallback("b", CreateWat1);
state.AddCallback("c", CreateWat2);

state.AddCallback("WeaponActiveIndex", WeaponActiveIndexChanged);
}
public override void SimulateOwner()
{
var speed = 4f;
var movement = Vector3.zero;
if (Input.GetKey(KeyCode.W)) { movement.z += 1; }
if (Input.GetKey(KeyCode.S)) { movement.z -= 1; }
if (Input.GetKey(KeyCode.A)) { movement.x -= 1; }
if (Input.GetKey(KeyCode.D)) { movement.x += 1; }

if (Input.GetKeyDown(KeyCode.Alpha1)) state.WeaponActiveIndex = 0;
if (Input.GetKeyDown(KeyCode.Alpha2)) state.WeaponActiveIndex = 1;
if (Input.GetKeyDown(KeyCode.Alpha3)) state.WeaponActiveIndex = 2;
if (Input.GetKeyDown(KeyCode.Alpha0)) state.WeaponActiveIndex = -1;
if (movement != Vector3.zero)
{
transform.position = transform.position + (movement.normalized * speed * BoltNetwork.FrameDeltaTime);
}
}

void CreateWat()
{
Debug.Log(state.a);
WeaponObjects[0] = Instantiate(ListWeap.weaponBases[state.a], gameObject.transform);
}
void CreateWat1()
{
Debug.Log(state.b);
WeaponObjects[1] = Instantiate(ListWeap.weaponBases[state.b], gameObject.transform);
}
void CreateWat2()
{
Debug.Log(state.c);
WeaponObjects[2] = Instantiate(ListWeap.weaponBases[state.c], gameObject.transform);

}
void WeaponActiveIndexChanged()
{
for (int i = 0; i < WeaponObjects.Length; ++i)
{
Debug.Log(WeaponObjects);
WeaponObjects.SetActive(false);
}
if (state.WeaponActiveIndex >= 0)
{
int objectId = state.WeaponActiveIndex;
WeaponObjects[objectId].SetActive(true);
}
}
}

Comments

  • YoungBili
    YoungBili
    edited November 2020
    Close discussion, my state default = 0 and when set some stata = 0 .dont chenge value)))))
This discussion has been closed.