2015-12-27 2 views
1

Я пытаюсь получить доступ к методу из другого сценария, но я получаю ошибку уровня защиты.Открытый метод 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(); 

Как я могу сделать эту работу?

+0

Чтобы получить доступ к нему из других скриптов, вам необходимо сделать его статическим. –

+0

Я попытался сделать его статическим, но я все равно получаю ту же ошибку – Michael

+4

@ FᴀʀʜᴀɴAɴᴀᴍ не нужно статично, потому что он обращается к экземпляру 'PlayerShooting' – AustinWBryan

ответ

1

Класс PlayerShooting должен быть общедоступным.

+0

Если ошибка времени компиляции не приходит уже из 'GetComponent ()', то тип должен быть достаточно доступным. Однако может быть правильным, что ошибка времени компиляции исходит из этого. –

1

Попробуйте повторно импортировать PlayerShooting.cs. Если ничего не помогает, закройте Unity, выбросьте папку библиотеки, а затем снова откройте ее. Если проблема по-прежнему сохраняется, вы сталкиваетесь с именами коллизий, случайным дублированием декларации класса или аналогичным.

Смежные вопросы