Я пытаюсь получить доступ к методу из другого сценария, но я получаю ошибку уровня защиты.Открытый метод void недоступен из-за его уровня защиты
Несмотря на то, что я сделал способ Public.
Это метод, который я хочу, чтобы получить доступ к:
public void Shoot()
{
timer = 0f;
gunAudio.Play();
gunLight.enabled = true;
faceLight.enabled = true;
gunParticles.Stop();
gunParticles.Play();
gunLine.enabled = true;
gunLine.SetPosition (0, transform.position);
shootRay.origin = transform.position;
shootRay.direction = transform.forward;
if(Physics.Raycast (shootRay, out shootHit, range, shootableMask))
{
EnemyHealth enemyHealth = shootHit.collider.GetComponent <EnemyHealth>();
if(enemyHealth != null)
{
enemyHealth.TakeDamage (damagePerShot, shootHit.point);
}
gunLine.SetPosition (1, shootHit.point);
}
else
{
gunLine.SetPosition (1, shootRay.origin + shootRay.direction * range);
}
}
И я пытаюсь получить доступ к нему из другого сценария с этой строки кода:
if (hit.transform.name == "MyObjectName")
GameObject.Find("Gun").GetComponent<PlayerShooting>().Shoot();
Как я могу сделать эту работу?
Чтобы получить доступ к нему из других скриптов, вам необходимо сделать его статическим. –
Я попытался сделать его статическим, но я все равно получаю ту же ошибку – Michael
@ FᴀʀʜᴀɴAɴᴀᴍ не нужно статично, потому что он обращается к экземпляру 'PlayerShooting' – AustinWBryan