42 / 42 / 5
Регистрация: 25.03.2014
Сообщений: 444
1

Ошибка GetComponent<MobileController>

23.10.2018, 13:04. Показов 3765. Ответов 1

Друзья пишет ошибку не пойму почему
Подключаю ссылку на мобильное управление MobileContreller.cs через поиск игрового обьекта по тегу "Joystick"
ошибка в первом коде выделил
Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка CS1061 "GameObject[]" не содержит определения для "GetComponent", и не удалось найти доступный метод расширения "GetComponent",
принимающий тип "GameObject[]" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).
Assembly-CSharp
C:\Users\Konstantin\Documents\office\Новая папка (2)\Spase\Assets\_Complete-Game\Scripts\Done_PlayerController.cs 80
Активный
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.Collections;
[System.Serializable]
public class Done_Boundary  //функция установки границ движения пользователя
{
    public float xMin, xMax, zMin, zMax;
}
 
public class Done_PlayerController : MonoBehaviour
{
 
    /* вот тут новое для джойстика/*/
    private CharacterController ch_controller;
    private Vector3 movement;
    public MobileController mContr;//ссылка на скрипт мобайл контроллер
 
    /*                              */
 
    public float speed;//скорость   
    public float tilt;//переменная поворота игрока
    public Done_Boundary boundary; //переменная для задания границы
 
    private PlayerPrefs Player;
 
    public GameObject shot; //выстрел
    public Transform shotSpawn;//перезарядка выстрела
    public float fireRate;//растояние снаряда
     
    private float nextFire;//следующий выстрел
    
    void Update ()
    {
        if (Input.GetButton("Fire1") && Time.time > nextFire) //функция для выстрела
        {
            nextFire = Time.time + fireRate;
            Instantiate(shot, shotSpawn.position, shotSpawn.rotation);
            GetComponent<AudioSource>().Play ();
        }
    }
 
    void FixedUpdate ()
    {
      
        
 
 
       // float moveHorizontal = Input.GetAxis ("Horizontal"); // получение значений осей
        //float moveVertical = Input.GetAxis ("Vertical");
 
        movement = Vector3.zero;
        movement.x = mContr.Horizontal() * speed;
        movement.z = mContr.Vertical() * speed;
 
        ch_controller.Move(movement * Time.deltaTime);
       
     
 
 
 
 
    }
    private void Start()
    {
        ch_controller = GetComponent<CharacterController>();
        mContr = GameObject.FindGameObjectsWithTag("Joystick").GetComponent<MobileController>(); // вот тут ошибка 
Серьезность  Код  Описание    Проект    Файл    Строка    Состояние подавления
Ошибка    CS1061  "GameObject[]" не содержит определения для "GetComponent", и не удалось найти доступный метод расширения "GetComponent", 
принимающий тип "GameObject[]" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).   
Assembly-CSharp
C:\Users\Konstantin\Documents\office\Новая папка (2)\Spase\Assets\_Complete-Game\Scripts\Done_PlayerController.cs 80  
Активный
 
       
       
       
 
    }
 
    /*   для джостика */
 
    
 
}


Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
 
public class MobileController : MonoBehaviour, IDragHandler, IPointerUpHandler, IPointerDownHandler
{
    
    private Image joystickBG;
    [SerializeField]
    public Image joystick;
    private Vector2 inputVector;//для получения джостика координат
 
    private void Start()
    {
        joystickBG = GetComponent<Image>();
        joystick = transform.GetChild(0).GetComponent<Image>();
    }
    public virtual void OnPointerDown(PointerEventData ped)
    {
        OnDrag(ped);
    }
 
    public virtual void OnPointerUp(PointerEventData ped)
    {
        inputVector = Vector2.zero; // вернуть координаты в обратное положение при отжатии
        joystick.rectTransform.anchoredPosition = Vector2.zero; //возвращаем джойстик в исходное положение
    }
 
    public virtual void OnDrag(PointerEventData ped)
    {
        Vector2 pos;
        if(RectTransformUtility.ScreenPointToLocalPointInRectangle(joystickBG.rectTransform,ped.position,ped.pressEventCamera,out pos))
        {
            pos.x = (pos.x / joystickBG.rectTransform.sizeDelta.x);
            pos.y = (pos.y / joystickBG.rectTransform.sizeDelta.y);
            inputVector = new Vector2(pos.x * 2 - 1, pos.y * 2 - 1);
            inputVector = (inputVector.magnitude > 1.0f) ? inputVector.normalized : inputVector;
            joystick.rectTransform.anchoredPosition = new Vector2(inputVector.x * (joystickBG.rectTransform.sizeDelta.x / 2), inputVector.y * (joystickBG.rectTransform.sizeDelta.y / 2));
        }
    }
    public float Horizontal()
    {
        if (inputVector.x != 0) return inputVector.x;
        else return Input.GetAxis("Horizontal");
    }
    public float Vertical()
    {
        if (inputVector.y != 0) return inputVector.y;
        else return Input.GetAxis("Vertical");
    }
 
}


Добавлено через 19 минут
Все разобрался я прост не правильно написал FindGameObjectWithTag а не FindGameObjectsWithTag
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.10.2018, 13:04
Ответы с готовыми решениями:

работа с GetComponent();
Начал изучать Unity3D, пытаюсь изменит один скрипт из другого, но постоянно выдает ошибку((((...

Unity имеется скрипт MobileController, как сделать вращение персонажа вслед за android джойстиком
using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; public class...

GetComponent с другого объекта
Добрый день) Второй день уже уткнулся в одну проблему и не могу ее решить. Есть два объекта на...

Проблема с GetComponent в Unity3d
Здравствуйте, Появилась проблема с функцией GetComponent. Я создал новый проэкт, написал 2...

1
230 / 208 / 92
Регистрация: 26.10.2012
Сообщений: 624
23.10.2018, 13:59 2
Лучший ответ Сообщение было отмечено Dgaizer как решение

Решение

GameObject.FindGameObjectsWithTag("Joystick").GetComponent<MobileController>();

В этой строке функция FindGameObjectSWithTag возвращает массив найденных объектов.
Метод GetComponent() может быть применим только к конкретному элементу эатого массива.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2018, 13:59

GetComponent<Rigidbody>().AddForce работает не корректно
Добрый день! Применяю вот такой код: void FixedUpdate() { ...

Можно ли отключить скрипт через GetComponent?
Новичок, только начал изучать с# и столкнулся с проблемой, когда работает скрипт для персонажа...

Getcomponent
Всем привет! Ситуация вот какая... есть диалог, в диалоге кнопка. Как в кнопке на SSJS узнать имя...

IIS- asp ошибка: HTTP 500.100 - Внутренняя ошибка сервера - ошибка ASP Internet Information Services
Привет! Конфигурация win2000pro sp2, стандартный IIS, IE 5. При попытке обратиться к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru