Помощь в простом скрипте

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Помощь в простом скрипте

Сообщение xANGELofDEATHx 21 фев 2017, 23:04

Доброго времени суток.Собственно хотел реализовать смену фоновых картинок в 2д игре, как это лучше сделать, через спрайты или просто текстуры...Может есть варианты.И тогда тут же вопрос, почему нельзя создать массив спрайтов?
Аватара пользователя
xANGELofDEATHx
UNITрон
 
Сообщения: 177
Зарегистрирован: 08 окт 2015, 16:43
Skype: dimaK115

Re: Помощь в простом скрипте

Сообщение samana 21 фев 2017, 23:22

Смотря какой результат вам нужен. Если фоны должны меняться плавно через прозрачность, то можно спрайтами сделать.
Массив спрайтов создать можно.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Помощь в простом скрипте

Сообщение xANGELofDEATHx 21 фев 2017, 23:26

public Sprit a[];
так не работает)
Нет, нужно просто каждые 10 секунд менять картинку фона, вот и мудрю как реализовать
Аватара пользователя
xANGELofDEATHx
UNITрон
 
Сообщения: 177
Зарегистрирован: 08 окт 2015, 16:43
Skype: dimaK115

Re: Помощь в простом скрипте

Сообщение samana 21 фев 2017, 23:29

В C# массив выглядит так
Синтаксис:
Используется csharp
Sprite[] spirtes = new Sprite[0];


Можете запускать Invoke каждые 10 секунд и меняйте спрайт/текстуру.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Помощь в простом скрипте

Сообщение xANGELofDEATHx 21 фев 2017, 23:36

Спасибо, попробую сделать. Еще вопрос, у спрайта размеры маленькие, но они 9:16, как и большие картинки, можно его до таких же размеров растянуть?
Аватара пользователя
xANGELofDEATHx
UNITрон
 
Сообщения: 177
Зарегистрирован: 08 окт 2015, 16:43
Skype: dimaK115

Re: Помощь в простом скрипте

Сообщение samana 21 фев 2017, 23:40

Можете попробовать изменить у этих спрайтов свойство pixel per unit(кажется так) в инспекторе, выделив спрайт в окне проекта (не сцены), в общем в настройках импорта спрайта.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Помощь в простом скрипте

Сообщение xANGELofDEATHx 21 фев 2017, 23:44

Да, это действительно изменяет размер спрайта, но так в ручную подобрать его по размеру других сложнова-то
Аватара пользователя
xANGELofDEATHx
UNITрон
 
Сообщения: 177
Зарегистрирован: 08 окт 2015, 16:43
Skype: dimaK115

Re: Помощь в простом скрипте

Сообщение xANGELofDEATHx 21 фев 2017, 23:56

Тупняк, прописать смену

Синтаксис:
Используется csharp
 public Sprite[] fon;

    void Start()
    {
        Invoke("FON", 10);
    }
    void FON()
    {
       
    }
Аватара пользователя
xANGELofDEATHx
UNITрон
 
Сообщения: 177
Зарегистрирован: 08 окт 2015, 16:43
Skype: dimaK115

Re: Помощь в простом скрипте

Сообщение samana 22 фев 2017, 00:01

Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Помощь в простом скрипте

Сообщение xANGELofDEATHx 22 фев 2017, 00:32

что неправильно?
Синтаксис:
Используется csharp
 void FON()
    {
        GameObject.Find("Fon").transform.GetComponent<SpriteRenderer>
    }

Хочу получить компонент слайдер и заменять его каждые 10 сек
Аватара пользователя
xANGELofDEATHx
UNITрон
 
Сообщения: 177
Зарегистрирован: 08 окт 2015, 16:43
Skype: dimaK115

Re: Помощь в простом скрипте

Сообщение samana 22 фев 2017, 10:38

xANGELofDEATHx писал(а):Хочу получить компонент слайдер


Слайдер? А при чём тут слайдер? Если со спрайтом, то:

Синтаксис:
Используется csharp
using UnityEngine;

public class BackgroundChanger : MonoBehaviour
{
    public Sprite[] sprites;
    public float changeIntervalSec = 10f;

    private SpriteRenderer _spriteRend;
    private int _currentSprite;

    void Start()
    {
        _spriteRend = GameObject.Find("Fon").GetComponent<SpriteRenderer>();
        _spriteRend.sprite = sprites[_currentSprite];

        InvokeRepeating("updateSprite", changeIntervalSec, changeIntervalSec);
    }

    void updateSprite()
    {
        _currentSprite++;
        if (_currentSprite == sprites.Length) _currentSprite = 0;

        _spriteRend.sprite = sprites[_currentSprite];
    }
}
 
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Помощь в простом скрипте

Сообщение xANGELofDEATHx 22 фев 2017, 12:25

Такой вопрос, почему обязательно 10f?Нельзя тип инт вставить на время?Он же меньше памяти кушает
Аватара пользователя
xANGELofDEATHx
UNITрон
 
Сообщения: 177
Зарегистрирован: 08 окт 2015, 16:43
Skype: dimaK115

Re: Помощь в простом скрипте

Сообщение Woolf 22 фев 2017, 12:56

xANGELofDEATHx писал(а):Такой вопрос, почему обязательно 10f?Нельзя тип инт вставить на время?Он же меньше памяти кушает


По большому секрету, int - 4 байта, и float - 4 байта.
http://mycsharp.ru/post/7/2013_04_15_pe ... sharp.html
Только тссс..

ЗЫ если вы начинаете экономить память на единичных переменных, то у меня для вас плохие новости. У вас, явно, неверный подход к программированию на Unity
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Помощь в простом скрипте

Сообщение xANGELofDEATHx 22 фев 2017, 14:00

Чтобы не создавать тему,спрошу тут, как проверить на нажатие, если скрипт весит не на объекте?
Синтаксис:
Используется csharp
{
    void OnMouseUpAsButton()
    {
        switch (gameObject.name)
        {
            case "Play":
            Application.LoadLevel("Play");
            break;
        }
    }
}

Это обычный скрипт, а эту функцию надо вызвать из другого, но проверка идет по нажатию именно на коллайдер, где висит скрипт
Аватара пользователя
xANGELofDEATHx
UNITрон
 
Сообщения: 177
Зарегистрирован: 08 окт 2015, 16:43
Skype: dimaK115

Re: Помощь в простом скрипте

Сообщение xANGELofDEATHx 25 фев 2017, 10:06

Как сделать проверку нажатия на объекте, если скрипт на другом объекте?
Аватара пользователя
xANGELofDEATHx
UNITрон
 
Сообщения: 177
Зарегистрирован: 08 окт 2015, 16:43
Skype: dimaK115


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot], Yandex [Bot] и гости: 21