Суббота, 23 Ноября 2024, 05:49

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 4 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Результаты поиска
Valik_FenkoДата: Среда, 20 Января 2016, 16:16 | Сообщение # 61 | Тема: Экран и бокс
почетный гость
Сейчас нет на сайте
Есть Gui.Box ,и нужно сделать чтоб он не выходил за экран при отрисовке

Но он почему-то не работает(Не пойму почему.Вот первая часть кода:

Это сам код где должно отодвигать бокс левее если он выходил за экран:

Код
if(NewRect.Contains(Event.current.mousePosition))
{
TT_x = Event.current.mousePosition.x;
TT_y = Event.current.mousePosition.y;
}


Код
float TT_xMax=200,TT_yMax=160;
if(Screen.width-TT_x < TT_xMax) TT_x-=Screen.width-TT_x;
if(Screen.height-TT_y < TT_yMax) TT_y-=Screen.height-TT_y;
GUI.Box(new Rect(TT_x,TT_y,TT_xMax,TT_yMax)," X:"+TT_x.ToString()+"  Y:"+TT_y.ToString(),TTStyle);


Конечно это не весь код,но
я скинул то что отвечает за отрисовку бокса


Сообщение отредактировал Valik_Fenko - Среда, 20 Января 2016, 16:24
Valik_FenkoДата: Вторник, 19 Января 2016, 17:57 | Сообщение # 62 | Тема: Проблема с инвентарем
почетный гость
Сейчас нет на сайте
В справке я ниче не нашел
Valik_FenkoДата: Вторник, 19 Января 2016, 16:04 | Сообщение # 63 | Тема: Проблема с инвентарем
почетный гость
Сейчас нет на сайте
Я посотрел урок по созданию Gui инвентаря ,но ничерта не понял =(.Как сделать перетаскивание Gui.Button?
//

Так терь появился другой вопрос.У меня есть этот самый Gui.Box с иконкой предмета он такается по экрану,но как сделать чтоб он был поверх других боксов и кнопок?


Сообщение отредактировал Valik_Fenko - Вторник, 19 Января 2016, 16:41
Valik_FenkoДата: Вторник, 19 Января 2016, 14:52 | Сообщение # 64 | Тема: Проблема с инвентарем
почетный гость
Сейчас нет на сайте
Проще,красивей.Чем ?
Не по теме.


Сообщение отредактировал Valik_Fenko - Вторник, 19 Января 2016, 14:52
Valik_FenkoДата: Вторник, 19 Января 2016, 14:22 | Сообщение # 65 | Тема: Проблема с инвентарем
почетный гость
Сейчас нет на сайте
Мне нид сделать чтоб зажатой на иконке клавиши миши происходило одно дейсвие ,а при нажатия на неё - другое.Я написал вот так но это не работает((

Код
  if(NewRect.Contains(Event.current.mousePosition))
      {
       if(Input.GetMouseButton(0))
       {
        GUI.Label(NewRect,"Работает");
        if(Input.GetMouseButtonDown(0))
        {
         //Дейтвие
        }
       }
      }
     }
Valik_FenkoДата: Понедельник, 18 Января 2016, 22:41 | Сообщение # 66 | Тема: Проблема с инвентарем
почетный гость
Сейчас нет на сайте
Пишу инвентарь на Gui ,пока успешно,но столкнулся с тонкостью.
Есть вот такое
if(Gui.Buttom(new rect,бла бла бла...
{
}
это проверяет нажатия на кнопку,а как мне проверить скажем наведения на неё мишкой или мб мне нид проверить что мишка зажата на кнопке.Как это сделать?
Valik_FenkoДата: Понедельник, 18 Января 2016, 22:38 | Сообщение # 67 | Тема: Массив
почетный гость
Сейчас нет на сайте
karuy.Моя код был рабочий.Надо только было break; поставить в цикле...Сам разобрался

Добавлено (18 января 2016, 22:38)
---------------------------------------------
и что есть var? это же Java я просто с c# работаю.Пардон ,забыл уточнить

Valik_FenkoДата: Понедельник, 18 Января 2016, 14:16 | Сообщение # 68 | Тема: Массив
почетный гость
Сейчас нет на сайте
Есть обыкновенный одномерный массив из 4 элементов,мне нужно что сделать
вот допустим по умолчанию все элементы массива равны -1.Потом они могут изменятся программой
Скажм массив будет выглядеть вот так:

1,-1,0,-1

и мне нужно сделать так чтобы элемент массива не равный -1 максимально сдвинулся влево и принял такой вид

1,0,-1,-1.
У меня получилось сделать это,но есть проблемы с элементами массива когда все несколько элеметов не равны -1 и в ходе программы средний элемент поставить на -1.Тогда 2 предидущих тоже станут -1,непонятно че короче с ним происходит =).Код выглядит так:
Код
for (int l = 0; l <= Player.LastOpenBag.Length; l++)
  {
   if(Player.LastOpenBag[l] == -1)
   {
    for(int i = 0;i < Player.LastOpenBag.Length;i++)
    {
     if(Player.LastOpenBag[i] != -1 && i>l && i!=l)
     {
      Player.LastOpenBag[l] = Player.LastOpenBag[i];
      Player.LastOpenBag[i] = -1;
     }
    }
   }
  }


Этот код валяется в FixedUpdate.Повторю.Я хочу сделать чтоб все элементы массива не равные -1 скучковались левее,те что равны -1 справа


Сообщение отредактировал Valik_Fenko - Понедельник, 18 Января 2016, 14:20
Valik_FenkoДата: Суббота, 16 Января 2016, 20:47 | Сообщение # 69 | Тема: Проблема с инвентарем
почетный гость
Сейчас нет на сайте
Воту меня такая идея.Сделать два Lista Один чет типа префаба предметов,там скажем меч какой-то у него заданы статы и этот лист хранит их,а второй это созданные предметы,скажем игрок может слутать несколько одинаковых предметов и они будут создаватся из листа 1.Это норм идея или нагрузка слишком большая будит.Мб кто чего посоветует получше?

Сообщение отредактировал Valik_Fenko - Суббота, 16 Января 2016, 14:05
Valik_FenkoДата: Суббота, 16 Января 2016, 20:46 | Сообщение # 70 | Тема: Проблема с инвентарем
почетный гость
Сейчас нет на сайте
Вот так всегды,забыл в void запихнуть!!ааа!
Valik_FenkoДата: Суббота, 16 Января 2016, 20:46 | Сообщение # 71 | Тема: Проблема с инвентарем
почетный гость
Сейчас нет на сайте
Да,но проблема в том что каждый раз когда я захочу создать предмет мне нужно перезаписать массив и как к нему потом обращяться ведь я не моуг сделать одинаковые имена им.

Добавлено (16 января 2016, 12:28)
---------------------------------------------
Мб есть более разумный способ как добавлять предметы?У меня кое что назревает.Как обратиться к элементу List?Вот этого я не оч понял.У нас есть скрипт в испекторе заданы переменные и как к ним обратиться через List

Добавлено (16 января 2016, 12:57)
---------------------------------------------
Я просто ничерта не понял в коде откуда берётся информация о предмета из List.Объясните плз)

на Add компилятор ругается и на обращение через Имя листа[индекс] тоже

вот весь код:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class ItemData : MonoBehaviour {
public List<Item> items = new List<Item>();

void Start ()
{
}
void Update()
{
}
for(int i=0;i<=items.Count;i++)
{
items[i].Name = "";
}
}

ругается на всё:
на цикл на точку после [i] ,на само i и самое весёлое что когда пишу items. мне показывает список какой-то левой дряни которая никак не относится к классу List.Че делать?

Либо компилятор кривущий,либо я чет не понял


Сообщение отредактировал Valik_Fenko - Суббота, 16 Января 2016, 13:38
Valik_FenkoДата: Суббота, 16 Января 2016, 20:46 | Сообщение # 72 | Тема: Проблема с инвентарем
почетный гость
Сейчас нет на сайте
Анг ваще не понимаю,но посотрю.Дело в том что я делаю некое подобие ммо),и мне нужен динамический инвентарь,а я посотрел видео на русском где чувак делает инвентарь,но добавляет элементы в инвентарь не програмно,а в ручную.Это само собой не годится.Инвентарь что ты писал вродь подходит)щас буду разбираться XD

Добавлено (16 января 2016, 12:02)
---------------------------------------------
Я пока молчу про мультиплеер,но ведь для такой игры нужен динамический инвентарь,а точней итемы.То есть,убил моба - создались предметы.А как их создать програмно ,а не в ручную позапихивать в инвентарь в вышеуказаных уроках я не увидел

Добавлено (16 января 2016, 12:08)
---------------------------------------------
Я немного разобрался с List<>();,но есть вопрос
Можно ли как-то изменить размер этого ,можно сказать массива?
Можно создать новый List с разменом на 1 больше чем старый ,но как потом обращаться к нему?(


Сообщение отредактировал Valik_Fenko - Суббота, 16 Января 2016, 12:12
Valik_FenkoДата: Суббота, 16 Января 2016, 20:45 | Сообщение # 73 | Тема: Проблема с инвентарем
почетный гость
Сейчас нет на сайте
Спасибо,у меня искать никогда ниче не получается :(.Я ток пише код на базе того что уже знаю
Valik_FenkoДата: Суббота, 16 Января 2016, 20:45 | Сообщение # 74 | Тема: Проблема с инвентарем
почетный гость
Сейчас нет на сайте
Подскажите как лучше сделать систему предметов.
Я там видел пример через какой-то List и всё такое,но ничиго не понял.Мне нужно что-то более динамическое,ибо создаю рпг,где убивая мобов создается лут(предметы).Эт нид сделать скрипт где будут статы предмета ,потом на обьект обьект в префаб,но я чет запутался((.Как это всё оформить?

Если будете кидать пример - то чтоб более-менее понятно был прокоментирован код,а то я не люблю тупо копировать.Надо ж разобраться


Сообщение отредактировал Valik_Fenko - Пятница, 15 Января 2016, 22:12
Valik_FenkoДата: Суббота, 16 Января 2016, 20:45 | Сообщение # 75 | Тема: Проблема с инвентарем
почетный гость
Сейчас нет на сайте
Хочу свою текстуру кнопки.Можно это как-то сделать?(Gui.Buttom)

Сообщение отредактировал Valik_Fenko - Суббота, 16 Января 2016, 16:36
Valik_FenkoДата: Суббота, 16 Января 2016, 20:45 | Сообщение # 76 | Тема: Проблема с инвентарем
почетный гость
Сейчас нет на сайте
+++.Спасибо за моральную поддержку

Добавлено (16 января 2016, 20:27)
---------------------------------------------
biggrin

Добавлено (16 января 2016, 20:45)
---------------------------------------------
Чего?Мне норм.Тем более в у меня некое подобие mmorpg ,а не шутер где много чего инрефейс играет.Думаю норм будет)).Я уже разобрался.Просто ошибки такие глупые

Valik_FenkoДата: Суббота, 16 Января 2016, 20:13 | Сообщение # 77 | Тема: Проблема с инвентарем
почетный гость
Сейчас нет на сайте
Код
for(int i = 1;i <= 4;i++)
{
Bag[i-1].pixelInset = new Rect(Screen.width - 40*i,4,38,38);
if(Player.bagOpen[Player.LastOpenBag[i-1]] == true)
{
if(12-slEnableY < Player.SlotInBag[Player.LastOpenBag[i-1]]/4)
{
slEnableX_+=1;
slEnableY=1;
}
slEnableX=Player.SlotInBag[Player.LastOpenBag[i-1]];
while(slEnableX>0) slEnableX-=4;
slEnableX=-slEnableX+1;
for(int s = 1;s<=Player.SlotInBag[Player.LastOpenBag[i-1]];s++)
{
if(GUI.Button(new Rect(Screen.width-3-40*slEnableX-160*slEnableX_,Screen.height-43-36*slEnableY,36,36),"",buttonStyle)){
}
slEnableX+=1;
if(slEnableX == 5)
{
slEnableX=1;
slEnableY+=1;
}
}
slEnableY+=1;
}
}


Этот вот.Тот цикл работает как надо,а этот обрывается хотя его об этом не просят.

Добавлено (16 января 2016, 20:13)
---------------------------------------------
Вот!Я нашел ошибку."Array index is not of range".Че эт значит?.Индекс вроде впорядке.
Player.LastOpenBag у него 4 элемента
обращение идет к элементу
Player.LastOpenBag[i-1]
Начинает с элемента 0.В чем проблема?

А всё понял!!Там же -1 по умолчанию,типа сумка закрыта.А я проверяю.Нид добавить проверку по другому)Мде.Туплю


Сообщение отредактировал Valik_Fenko - Суббота, 16 Января 2016, 20:15
Valik_FenkoДата: Суббота, 16 Января 2016, 20:04 | Сообщение # 78 | Тема: Проблема с инвентарем
почетный гость
Сейчас нет на сайте
Проблема в том что после того как я добавил Player.LastOpenBag и засунул туда где отрисовываются ячейки в сумках(чтобы сумки отображались в последовательности как их открыли)После этого цикл в Interface.cs начал тикать ток 1 раз.Причина ваще не понятно в чем.Мб я чем не доганяю

Добавлено (16 января 2016, 20:02)
---------------------------------------------
Вот.А где ты видешь в цикле break?

Добавлено (16 января 2016, 20:04)
---------------------------------------------
Или я чем в циклах не понимаю.Должен же тикать 4 раза.От 1 до 4.И Break; внутри нету

Valik_FenkoДата: Суббота, 16 Января 2016, 19:50 | Сообщение # 79 | Тема: Проблема с инвентарем
почетный гость
Сейчас нет на сайте
Тут кто-то живой есть?)

Сообщение отредактировал Valik_Fenko - Суббота, 16 Января 2016, 19:56
Valik_FenkoДата: Суббота, 16 Января 2016, 18:42 | Сообщение # 80 | Тема: Проблема с инвентарем
почетный гость
Сейчас нет на сайте
Ваще не пойму что не так.Вот код

Код
void OnGUI()
{
//
for (int i = 0; i <=3; i++) {
GUI.Label (new Rect (100, 100 + 20 * i, 150, 80), "" + Player.LastOpenBag [i].ToString ());
}
//
float slEnableX=1;
int slEnableY=1;
int slEnableX_ = 0;
for(int i = 1;i <= 4;i++)
{
Bag[i-1].pixelInset = new Rect(Screen.width - 40*i,4,38,38);
if(Player.bagOpen[Player.LastOpenBag[i-1]] == true)
{
if(12-slEnableY < Player.SlotInBag[Player.LastOpenBag[i-1]]/4)
{
slEnableX_+=1;
slEnableY=1;
}
slEnableX=Player.SlotInBag[Player.LastOpenBag[i-1]];
while(slEnableX>0) slEnableX-=4;
slEnableX=-slEnableX+1;
for(int s = 1;s<=Player.SlotInBag[Player.LastOpenBag[i-1]];s++)
{
if(GUI.Button(new Rect(Screen.width-3-40*slEnableX-160*slEnableX_,Screen.height-43-36*slEnableY,36,36),"",buttonStyle)){
}
slEnableX+=1;
if(slEnableX == 5)
{
slEnableX=1;
slEnableY+=1;
}
}
slEnableY+=1;
}
}
}


если if(Player.bagOpen[Player.LastOpenBag[i-1]] == true) равно всё таки false цикл прекращает свою роботу.Так разве должно быть?Вроде же в теле цикла нид всунуть break;Мда

Bag[i-1].pixelInset = new Rect(Screen.width - 40*i,4,38,38); короче срабатывает ток 1 раз ,когда i=1 (первый тик цилка) потом продолжает работу только когда Player.bagOpen[Player.LastOpenBag[i-1]] == true

Мб я не понял принцип работы цилка но разве for не как черть столько раз сколько я прописал?

P.S только что заметил странную вещь.Цикл тикает один раз и после того как я нажал на сумку мишкой.Вот скрипт.Они на разных обьектах
Код
using UnityEngine;
using System.Collections;

public class Inventory_Key : MonoBehaviour
{
public int BagID;
public OpenClose Type = OpenClose.Open;
public enum OpenClose
{
Open,
Close
}

void OnMouseDown()
{
if(Player.bagOpen [BagID] == false)
{
for(int i = 0;i<=3;i++)
{
if(Player.LastOpenBag[i] == -1)
{
Player.bagOpen[BagID] = true;
Player.LastOpenBag[i] = BagID;
break;
}
}
}
else
{
for(int i = 0;i<=3;i++)
{
if(Player.LastOpenBag[i] == BagID)
{
Player.bagOpen [BagID] = false;
Player.LastOpenBag[i] = -1;
break;
}
}
}
}
}

А вот код Player
Код
using UnityEngine;
using System.Collections;

public class Player : MonoBehaviour {

public static int mOpen;
public static bool[] bagOpen = new bool[4];
public static float[] SlotInBag = new float[4];
public static int[] LastOpenBag = new int[4];
public void Start()
{
for (int i = 0; i<= 3; i++) {
LastOpenBag[i] = -1;
}
SlotInBag[0]=11;
SlotInBag[1]=6;
SlotInBag[2]=10;
SlotInBag[3]=13;
}
//Предметы
}


Первые несколько скриптов можно сказать.Че не так?Мб кто разберётсЯ
Я лично всё пересотрел раза 4-5.Поднадоело =).Если никто не поможетп прийдётся делать как ранше(


Сообщение отредактировал Valik_Fenko - Суббота, 16 Января 2016, 19:51
  • Страница 4 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг