1 / 1 / 0
Регистрация: 08.02.2018
Сообщений: 109
1

Динамический ScrollView работает в Unity, не работает в Android

08.01.2019, 14:35. Показов 3096. Ответов 12
Метки нет (Все метки)

Странная проблема. Есть scrollview. Заполняю его динамически префабами.
В unity работает, все заполняется, на телефоне (Android 8.1) не заполняется.
Пробовал менять Target API level в Player settings(из Build Settings) - ставил 8.0 , ставил 9.0 не помогло. Компилировал для платформы PC - все нормально.

pageCalendar - префаб, ContentPagesCalendar - контент у scrollview
Вставлял так
C#
1
GameObject myNewpageCalendar= Instantiate(pageCalendar, ContentPagesCalendar);
и так
C#
1
2
var myNewpageCalendar = GameObject.Instantiate(pageCalendar.gameObject) as GameObject;
        myNewpageCalendar.transform.SetParent(ContentPagesCalendar, false);
в Unity - работает, на телефоне нет

В какой стороне ковыряться ? гуглил чего то не нашел подобных проблем

добавлю - если префабы засунуть в редакторе просто в дереве иерархии, без указания анчоров и прочих вещей, т.е. просто перетянуть мышью, то в телефоне они видны и все без проблем
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.01.2019, 14:35
Ответы с готовыми решениями:

Не работает приложение для android после обновления Unity
Помогите пожалуйста. Обновил Unity до 5.2.0f3. После этого моя игра перестала работать на android:...

Игра работает корректно в Unity, но не работает после билда
Разрабатываю игру на Android. Решил сделать билд для проверки на телефоне. В Unity все скрипты...

Почему в iPhone не работает нажатие на телефонный номер, а в Android работает?
Здравствуйте! Почему если открыть на iPhone WEB сайт, на котором отображают телефонный номер для...

Socket.io (прослушивание события работает на Desktop и не работает на Android)
Есть метод, прослушивающий событие сервера по soket.io (import io.socket.client.Ack; import...

12
488 / 285 / 128
Регистрация: 30.10.2018
Сообщений: 1,309
08.01.2019, 16:33 2
Цитата Сообщение от vedmed2005 Посмотреть сообщение
если префабы засунуть в редакторе просто в дереве иерархии, без указания анчоров и прочих вещей, т.е. просто перетянуть мышью, то в телефоне они видны и все без проблем
Элементарно Ватсон, а ты не думаешь что просто где-то в том же коде вызываеться ошибка, и из-за чего не продолжаеться код, в следствии чего не выполняеться добавления?

Цитата Сообщение от vedmed2005 Посмотреть сообщение
В какой стороне ковыряться ?
Либо искать глазами в коде, либо логи с телефона доставать.
0
1 / 1 / 0
Регистрация: 08.02.2018
Сообщений: 109
08.01.2019, 18:44  [ТС] 3
kitsoRik, ты прав Холмс
что просто где-то в том же коде вызываеться ошибка, и из-за чего не продолжаеться код
http://unity3d.ru/distribution... 37#p298937

Добавлено через 1 минуту
я тут уже консоль на телефоне написал с пошаговыми логами выполнения. Смотри ссылку - там проблеммное место

Добавлено через 2 минуты
да, и скролл тут оказ не причем

Добавлено через 1 час 11 минут
короче код
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
using System;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.Collections.Generic;
 
public class PanelCalendar : MonoBehaviour
{
    public Button btnAddMonth; //кнопка по которой добавляются префабы , всатвленна в инспекторе
    public Transform ContentPagesCalendar; // контент скроллвьювера, куда добавляются префабы, всатвлен в инспекторе
    public RectTransform pageCalendar; // сам префаб, , всатвлен в инспекторе
    private readonly string[] myMonth = new string[12] {"Январь","Февраль","Март","Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь" };
    private string myNowMonth;
    public int myCurrentMonth;
    int Schetchik;
   
    // Start is called before the first frame update
   
    void Start()
    {
        myNowMonth= DateTime.Now.ToString("MMMM");
       
        Schetchik =Array.IndexOf(myMonth, FirstLetterUp(myNowMonth));
 
        //добавим событие на кнопку
        btnAddMonth.onClick.AddListener(AddButtonClick);
 
        AddMonth(FirstLetterUp(myMonth[Schetchik]));    
    }
    public void AddButtonClick()
    {
        AddMonth(FirstLetterUp(myMonth[Schetchik]));      
    }
     void AddMonth (string month)
    {    
    var myNewpageCalendar = GameObject.Instantiate(pageCalendar.gameObject) as GameObject;
        myNewpageCalendar.transform.SetParent(ContentPagesCalendar, false);
        myNewpageCalendar.GetComponentInChildren<Text>(true).text = month;
 
        Schetchik++;
        if (Schetchik == 12)
        {
            Schetchik = 0;
        }
    }
    private string FirstLetterUp(string str)
    {
        return Char.ToUpper(str[0]) + str.Remove(0, 1);
    }
}
если вместо
C#
1
AddMonth(FirstLetterUp(myMonth[Schetchik]));
сделать вот так
C#
1
AddMonth(FirstLetterUp("fghfghfg"));
то на телефоне все нормально
непонятно, один тип поля
0
488 / 285 / 128
Регистрация: 30.10.2018
Сообщений: 1,309
08.01.2019, 21:35 4
vedmed2005, я так и не понял проблемы, либо видео запили либо проект скинь, неважно, твой или пустой, главное что бы проблема была.
0
1 / 1 / 0
Регистрация: 08.02.2018
Сообщений: 109
09.01.2019, 20:24  [ТС] 5
короче какая то ненормальная проблема , походу что то с SDK Android. Сносить надо все и поновой ставить отпишу потом

вот есть массив, смотри выше
C#
1
string[] myMonth = new string[12] {"Январь","Февраль","Март","Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь" };
если предавать в метод
C#
1
 void AddMonth (string month)
в качестве аргумента нулевой член массива, то есть myMonth [0] - андроид не реагирует
если передавать myMonth [1] или дальше , то все нормально. И при билдинге Unity что то предупреждает про Android SDK 25.
Я до этого ставил Android studio, Xamarin на VS , видимо конфликт какой-то или что то нае....ь )

Переставлю винду с образа, как раз удобный момент

потом отпишусь

Добавлено через 10 минут
на всяк напомню - в Unity - работает ,
проблема походу в компиляции

Там приложение не отваливается, просто не реагирует на void AddMonth (myMonth [0]) , хотя try - catch в коде нету
0
488 / 285 / 128
Регистрация: 30.10.2018
Сообщений: 1,309
09.01.2019, 20:58 6
Цитата Сообщение от vedmed2005 Посмотреть сообщение
Переставлю винду с образа, как раз удобный момент
Цитата Сообщение от vedmed2005 Посмотреть сообщение
Там приложение не отваливается, просто не реагирует на void AddMonth (myMonth [0]) , хотя try - catch в коде нету
Цитата Сообщение от vedmed2005 Посмотреть сообщение
в качестве аргумента нулевой член массива, то есть myMonth [0] - андроид не реагирует
ничего не курил? Быть такого не может, что бы к первому обращался, а к нулевому нет.

Еще знаю в старых версиях юнити (примерно до 5.6) была проблема с кодировкой, т.е. русские символы при проверке ("ЫыЫ" == "ЫыЫ") выдавало фолс, и мне все время приходилось файл перекодировать т.е. я считывал из файла, возможно, как-то в теории оно так и работает.

Добавлено через 1 минуту
Цитата Сообщение от vedmed2005 Посмотреть сообщение
И при билдинге Unity что то предупреждает про Android SDK 25.
Поставь 26+, ведь поддержка API юнити сейчас с неё только
1
1 / 1 / 0
Регистрация: 08.02.2018
Сообщений: 109
09.01.2019, 21:16  [ТС] 7
курил сигареты только)
вот я и говорю какая то хрень, переустановить надо по новой

Добавлено через 1 минуту
ну тестил же на телефоне - так оно и есть - на нулевой не реагирует

Добавлено через 4 минуты
MyMonth [Schetchik]

Schetchik изначально =0

при обращении к методу Schetchik ++

после первого обращения , тоесть Schetchik = уже 1, дальше работает!
99.999999999999% грешу на то что с sdk что то нето, короче переустановлю , отпишусь
спасибо за внимание )

Добавлено через 3 минуты
согласен что такого быть не может, но оно же есть
0
488 / 285 / 128
Регистрация: 30.10.2018
Сообщений: 1,309
09.01.2019, 21:25 8
Лучший ответ Сообщение было отмечено vedmed2005 как решение

Решение

Цитата Сообщение от vedmed2005 Посмотреть сообщение
Schetchik изначально =0
Цитата Сообщение от vedmed2005 Посмотреть сообщение
myNowMonth= DateTime.Now.ToString("MMMM");
myNowMonth тут равно "January" если что, как ты думаешь почему там ошибка?
1
1 / 1 / 0
Регистрация: 08.02.2018
Сообщений: 109
10.01.2019, 09:08  [ТС] 9
ёкрный бабай((((

Получается юнити выдает его как "январь"
а андроид гад - как "january"
теперь ясно.... буду тогда брать номер...

kitsoRik, спасибо большое!

Добавлено через 1 час 21 минуту
Юнити выдает точно "январь".
в юнити получал myNowMonth= DateTime.Now.ToString("MMMM")="январь"
и
C#
1
Schetchik =Array.IndexOf(myMonth, myNowMonth);
естественно получал Schetchik =-1

для этого и делал метод
C#
1
2
3
4
private string FirstLetterUp(string str)
    {
        return Char.ToUpper(str[0]) + str.Remove(0, 1);
    }
и в массиве уже искал
C#
1
Schetchik =Array.IndexOf(myMonth, FirstLetterUp(myNowMonth));
Добавлено через 6 минут
и получал Schetchik = 0, это точно помню
0
488 / 285 / 128
Регистрация: 30.10.2018
Сообщений: 1,309
10.01.2019, 11:52 10
Цитата Сообщение от vedmed2005 Посмотреть сообщение
Получается юнити выдает его как "январь"
а андроид гад - как "january"
странно, даже юнити должно выдавать January, что то у тебя не так, закинь в старт и посмотри что выведет:
C#
1
Debug.Log(DateTime.Now.ToString("MMMM"));
1
1 / 1 / 0
Регистрация: 08.02.2018
Сообщений: 109
10.01.2019, 18:07  [ТС] 11
ок спс, попробую вечером

а лучше вот так наверное наверняка
C#
1
2
3
4
DateTimeFormatInfo myMonth = new DateTimeFormatInfo();
,,,,,,,,
myNowMonth= DateTime.Now.ToString("MMMM");
Schetchik =Array.IndexOf(myMonth.MonthNames,myNowMonth)
Добавлено через 5 часов 33 минуты
"январь" в логах

Добавлено через 26 секунд
в юнити

Добавлено через 4 минуты
причем с маленькой буквы, на телефоне "January" с большой буквы

Добавлено через 1 минуту
буду так тогда
C#
1
2
myNowMonth= DateTime.Now.ToString("MMMM");
Schetchik =Array.IndexOf(myMonth.MonthNames,myNowMonth)
заодно при локализации(хотя вряд ли она вообще будет) заморачиваться не надо будет

Добавлено через 58 секунд
еще раз спасибо за подсказку !

Добавлено через 9 минут
тут вобще смешно
юнити
C#
1
2
DateTime.Now.ToString("MMMM"); 
выдает "январь"
C#
1
2
3
4
5
6
7
myMonth.MonthNames выдает массив месяцев 
        [0] "January"   System.String
        [1] "February"  System.String
        [2] "March" System.String
        [3] "April" System.String
        [4] "May"   System.String
..............
Добавлено через 1 минуту
никаких CultureInfo в коде нету, если что
0
2299 / 1470 / 852
Регистрация: 26.10.2018
Сообщений: 4,193
10.01.2019, 18:28 12
Перед всем кодом напиши:
C#
1
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-Us");
1
1 / 1 / 0
Регистрация: 08.02.2018
Сообщений: 109
10.01.2019, 19:07  [ТС] 13
спасибо ! буду пробовать и читать мануалы)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.01.2019, 19:07

Unity 2d unity.engine.ui не работает
using System.Collections; using System.Collections.Generic; using UnityEngine; using...

Почему ДВССЫЛ на простой именованный диапазон работает, а на динамический именованный не работает?
Т.е. если создать список, который будет получать данные из именованного диапазона с фиксированным...

Не работает мобильный интернет после перепрошивки на с Android 4.2.2 на Android 4.2.2
Всем привет. После перепрошивки телефона почему-то перестал работать мобильный интернет. До этого...

Android.support.v4.app.FragmentActivity не работает в Android Studio
объясните пожалуйста,как в андроид студио добавить вышеуказанную библиотеку,чтобы работало у меня...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.