2015-10-08 8 views
0

я получаю кнопку с помощью этого:Использование Raycast, чтобы увидеть, если кнопка нажата холст

Button button = GameObject.FindGameObjectWithTag("MainCanvas").GetComponentInChildren<Button>(); 

А потом я:

void Update() 
{ 
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); 
    RaycastHit hit; 
    if (Physics.Raycast(ray, hit)) 
    {  
     if (button.collider.Raycast(mainCamera.ScreenPointToRay(Input.mousePosition), hit)) 
     { 
      //Code to run when button clicked 
     } 
    } 
} 

Однако я получаю ошибки на этом. Любая идея, где я ошибся?

Ошибка:

Argument 1: Cannot convert from UnityEngine.Ray to UnityEngine.Vector3 Argument 1: Cannot convert from UnityEngine.RaycastHit to UnityEngine.Vector3 Component.collider is obsolete. Property: collider has been depricated Component does not contain a definition for Raycast and no extension method 'Raycast' accepting a first argument type of 'Component' could be found 
+0

Какая ошибка у вас там? –

+0

Аргумент 1: Невозможно преобразовать из UnityEngine.Ray в UnityEngine.Vector3 Аргумент 1: Невозможно преобразовать из UnityEngine.RaycastHit в UnityEngine.Vector3 Компонент.коллайдер устарел. Свойство: collider был лишен Компонент не содержит определения для Raycast и никакого метода расширения «Raycast», принимающий первый тип аргумента «Компонент», может быть найден – zligg

+0

Почему кто-то тратит время на исправление моей грамматики, но не помогает решить вопрос? – zligg

ответ

1

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