как применить bool в другом скрипте - PullRequest
0 голосов
/ 02 августа 2020

Я пытаюсь сделать так, чтобы, когда я беру объект, в данном случае пистолет, он помечает bool, единственная проблема заключается в том, что скрипты подбора оружия и стрельбы из оружия - это два разных скрипта. Итак, в настоящее время я пытаюсь заставить сценарий пикапа воздействовать на сценарий стрельбы. Я заставил его изменить с помощью сценария подбора, но не могу заставить сценарий подбора изменить сценарий съемки, вот фрагмент кода, о котором идет речь, любая помощь будет принята с благодарностью. Если нужен полный код обоих скриптов, я буду рад помочь, я просто не хотел заставлять людей сразу же разбирать 120 строк кода.

public float damage = 10f;
public float range = 100f;
public float fireRate = 15f;
public float Impact = 40f;


public Camera fpsCam;
public bool pickedUp = false;
public ParticleSystem muzzleFlash;
public GameObject impactEffect;

private float nextTimeToFire = 0f;
private PickupScript myScript;

// Start is called before the first frame update
void Start()
{
    if (gameObject.GetComponent<PickupScript>().pickedUp = true) ;
    setbool pickedUp = true;
}

1 Ответ

0 голосов
/ 03 августа 2020

Примечание: В условном выражении if отсутствует один знак «=», чтобы быть сравнением, а не присваиванием.

Если это была ошибка опечатки, читайте дальше:

Если я правильно понял, вам нужно только знать, что вы можете ссылаться на эти скрипты друг на друга.

Похоже, вы уже знаете это, потому что вы используете PickupScript в качестве переменной, поэтому я постараюсь обновить sh способы ссылаться на подобные вещи, так что, может быть, это поможет.

Скрипты - это классы, например, GameObject - тоже класс. Поэтому, когда вы создаете переменную GameObject publi c и назначаете из редактора соответствующий GameObject, вы устанавливаете ссылку.

Вы также можете сделать это, найдя в своей игре сценарий для ссылки, например, по имени TAG .

В вашем случае у вас есть 2 класса, PickUpScript и GunShot.

Если они являются частью одного и того же GameObject, вы можете назначить их из редактора, если нет, используйте FindGameObjectsWithTag . Если у вас есть ссылка в каждом скрипте, вы можете назначать значение двунаправленно.

public class PickupScript : MonoBehaviour
{
    public bool pickUpBool = false;
    public Shotgun shotgun = false;

}

public class Shotgun : MonoBehaviour
{
    public bool shotgunBool = false;
    public PickupScript pickupScript = false;

    private void Start()
    {
        if (gameObject.GetComponent<PickupScript>().pickUpBool == true)
        {
            shotgunBool = true;
        }
    }
}
...