Страница 1 из 1
Помощь в простом скрипте
Добавлено:
21 фев 2017, 23:04
xANGELofDEATHx
Доброго времени суток.Собственно хотел реализовать смену фоновых картинок в 2д игре, как это лучше сделать, через спрайты или просто текстуры...Может есть варианты.И тогда тут же вопрос, почему нельзя создать массив спрайтов?
Re: Помощь в простом скрипте
Добавлено:
21 фев 2017, 23:22
samana
Смотря какой результат вам нужен. Если фоны должны меняться плавно через прозрачность, то можно спрайтами сделать.
Массив спрайтов создать можно.
Re: Помощь в простом скрипте
Добавлено:
21 фев 2017, 23:26
xANGELofDEATHx
public Sprit a[];
так не работает)
Нет, нужно просто каждые 10 секунд менять картинку фона, вот и мудрю как реализовать
Re: Помощь в простом скрипте
Добавлено:
21 фев 2017, 23:29
samana
В C# массив выглядит так
Используется csharp
Sprite[] spirtes = new Sprite[0];
Можете запускать Invoke каждые 10 секунд и меняйте спрайт/текстуру.
Re: Помощь в простом скрипте
Добавлено:
21 фев 2017, 23:36
xANGELofDEATHx
Спасибо, попробую сделать. Еще вопрос, у спрайта размеры маленькие, но они 9:16, как и большие картинки, можно его до таких же размеров растянуть?
Re: Помощь в простом скрипте
Добавлено:
21 фев 2017, 23:40
samana
Можете попробовать изменить у этих спрайтов свойство pixel per unit(кажется так) в инспекторе, выделив спрайт в окне проекта (не сцены), в общем в настройках импорта спрайта.
Re: Помощь в простом скрипте
Добавлено:
21 фев 2017, 23:44
xANGELofDEATHx
Да, это действительно изменяет размер спрайта, но так в ручную подобрать его по размеру других сложнова-то
Re: Помощь в простом скрипте
Добавлено:
21 фев 2017, 23:56
xANGELofDEATHx
Тупняк, прописать смену
Используется csharp
public Sprite[] fon;
void Start()
{
Invoke("FON", 10);
}
void FON()
{
}
Re: Помощь в простом скрипте
Добавлено:
22 фев 2017, 00:01
samana
Re: Помощь в простом скрипте
Добавлено:
22 фев 2017, 00:32
xANGELofDEATHx
что неправильно?
Используется csharp
void FON()
{
GameObject.Find("Fon").transform.GetComponent<SpriteRenderer>
}
Хочу получить компонент слайдер и заменять его каждые 10 сек
Re: Помощь в простом скрипте
Добавлено:
22 фев 2017, 10:38
samana
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];
}
}
Re: Помощь в простом скрипте
Добавлено:
22 фев 2017, 12:25
xANGELofDEATHx
Такой вопрос, почему обязательно 10f?Нельзя тип инт вставить на время?Он же меньше памяти кушает
Re: Помощь в простом скрипте
Добавлено:
22 фев 2017, 12:56
Woolf
xANGELofDEATHx писал(а):Такой вопрос, почему обязательно 10f?Нельзя тип инт вставить на время?Он же меньше памяти кушает
По большому секрету, int - 4 байта, и float - 4 байта.
http://mycsharp.ru/post/7/2013_04_15_pe ... sharp.htmlТолько тссс..
ЗЫ если вы начинаете экономить память на единичных переменных, то у меня для вас плохие новости. У вас, явно, неверный подход к программированию на Unity
Re: Помощь в простом скрипте
Добавлено:
22 фев 2017, 14:00
xANGELofDEATHx
Чтобы не создавать тему,спрошу тут, как проверить на нажатие, если скрипт весит не на объекте?
Используется csharp
{
void OnMouseUpAsButton()
{
switch (gameObject.name)
{
case "Play":
Application.LoadLevel("Play");
break;
}
}
}
Это обычный скрипт, а эту функцию надо вызвать из другого, но проверка идет по нажатию именно на коллайдер, где висит скрипт
Re: Помощь в простом скрипте
Добавлено:
25 фев 2017, 10:06
xANGELofDEATHx
Как сделать проверку нажатия на объекте, если скрипт на другом объекте?