Суббота, 23 Ноября 2024, 06:18

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос-[ответ] по Unity
QWER56Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1
старожил
Сейчас нет на сайте
Вопрос-[Ответ] по Unity3d

  • База скриптов Unity3d
  • Курс Уроков по Unity 3D от Alcatraz

    ConsMark - поисковик по интернет магазинам.

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • darkduelistДата: Понедельник, 24 Февраля 2014, 22:52 | Сообщение # 5681
    частый гость
    Сейчас нет на сайте
    Народ предложите альтернативу для старта диалога... Игра с видом сверху в 2D, управление только кнопками...
    Код
    void  OnTriggerStay2D(Collider2D other)  
      {  
       if(Input.GetButtonDown("Z") && _GameController.Dialog == false)
       {
        other.GetComponent<Dialog_NPC>().DialogStart(this.GetComponent<CharacterScript>().Name);
       }
      }

    Данный вариант не всегда корректно срабатывает...


    berilДата: Понедельник, 24 Февраля 2014, 23:25 | Сообщение # 5682
    Я не ленивый, я — энергосберегающий
    Сейчас нет на сайте
    Попробуй создать еще bool
    когда входит триггер включать переменную на true, выходит выключай и используй в Update




    Накодил? Убери за собой!
    Инвентарь в Unity(UI)
    Инвентарь в Unity(GUI)
    AdomДата: Вторник, 25 Февраля 2014, 19:03 | Сообщение # 5683
    Печенька!
    Сейчас нет на сайте
    Как пользоваться enum ? Просто когда смотрел урок от Alcatras там он упоминал про enum. Вот только что это я так и не понял )).
    NEBRДата: Вторник, 25 Февраля 2014, 19:05 | Сообщение # 5684
    почти ветеран
    Сейчас нет на сайте
    Adom, http://msdn.microsoft.com/ru-ru/library/sbbt4032.aspx

    King Size #Gamiron12
    lentinantДата: Вторник, 25 Февраля 2014, 21:59 | Сообщение # 5685
    ленивый программист
    Сейчас нет на сайте
    Adom, это переменная, которая может принимать только определенные значения. К примеру, чтобы охарактеризовать пол персонажа, можно создать довольно простой энум с двумя значениями - male и female. Как и структуры, сначала надо определить сам энум, а потом уже создавать переменные непосредственно энума.
    Код
    enum gender
    {
        g_male,
        g_female,
    }

    public gender characterGender;


    Когда-то тут будут ссылки на крутые проекты. Или нет.
    AdomДата: Среда, 26 Февраля 2014, 14:01 | Сообщение # 5686
    Печенька!
    Сейчас нет на сайте
    Вот еще вопрос я делал все тот-же инвентарь по урокам Alcatras так вот когда я назначаю в List Item то когда запускаю игру они от туда выходят т.е нужно заново при запущенной игре переназначать эти item. Кто поможет ?

    Добавлено (26.02.2014, 14:01)
    ---------------------------------------------
    Вот код.
    Код
    using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;

    public class Inventory : MonoBehaviour {
    public List<Item> items = new List<Item>();
    public bool show = true;
    public GUISkin skin;
    public MouseLook camera;
    public MouseLook player;
    public float MaxMass=50;
    public float CurMass=0;
    [HideInInspector] public Item currItem;
    // Use this for initialization
    void Start () {
    RebuildMass();   
    }
    void AddMass(float mass){
    CurMass +=mass;

    }
    void RebuildMass(){   
    CurMass=0;
    for(int i=0; i < items.Count; i++){
    if(items[i]=null)     
    if(items[i].count > 0){     
    CurMass += items[i].count * items[i].mass;     
    }
    }    
    }
    // Update is called once per frame
    void Update () {
    if(Input.GetKeyDown(KeyCode.Tab)){
    show = !show;
    }
    if(show){    
    player.enabled = false;
    camera.enabled = false;
    }else{   
    player.enabled = true;
    camera.enabled = true;     
    }
    }
    void OnGUI(){
    if(show){    
    GUI.skin = skin;
    GUI.Window(0,new Rect(0f,0f,Screen.width,Screen.height),InventoryBody,"Inventory");
    }    
    }
    public void Use(Item item){   
    item.count--;
    RemoveItem(item);
    currItem =null;
    }
    public void RemoveItem(Item item){
    for(int i = 0; i < items.Count; i++){    
    if(items[i]==item){    
    items[i]=null;      
    }
    }
    }
    void InventoryBody (int id){   
    if(GUI.Button(new Rect(700f, Screen.height - 200f,150f,50f),"Выход")){
    show = false;
    currItem = null;
    player.enabled = true;
    camera.enabled = true;       
    }     
    if(currItem){
    GUI.DrawTexture(new Rect(600f,50f,80f,80f),currItem.texture);      
    GUI.color = Color.red;   
    GUI.Label(new Rect(700f,50f,400f,500f),"Описание");      
    GUI.color = Color.white;
    GUI.Box(new Rect(600f,50f,400f,300f),"");      
    GUI.Label(new Rect(700f,100f,400f,300f),currItem.discription);
    if(GUI.Button(new Rect(700,290,150,50),"Отмена")){
    currItem = null;      
    }
    if(GUI.Button(new Rect(700,230,150,50),"Использовать")){
    Use(currItem);    
    }     
    }      
    GUILayout.BeginArea(new Rect(60f,60f,100f,600f));   
    for(int i = 0; i < 5; i++){
    if(items[i]!=null){    
    if(GUILayout.Button(items[i].texture,GUILayout.Width(100f),GUILayout.Height(100f))){                    
    currItem =items[i];
    }
    }else{
    GUILayout.Box("",GUILayout.Width(100f),GUILayout.Height(100f));     
    }
    }
    GUILayout.EndArea();   
    //    
    GUILayout.BeginArea(new Rect(160f,60f,100f,600f));   
    for(int i = 5; i < 10; i++){
    if(items[i]!=null){    
    if(GUILayout.Button(items[i].texture,GUILayout.Width(100f),GUILayout.Height(100f))){        
    currItem =items[i];       
    }
    }else{
    GUILayout.Box("",GUILayout.Width(100f),GUILayout.Height(100f));     
    }
    }
    GUILayout.EndArea();   
    //
    GUILayout.BeginArea(new Rect(260f,60f,100f,600f));   
    for(int i = 10; i < 15; i++){
    if(items[i]!=null){    
    if(GUILayout.Button(items[i].texture,GUILayout.Width(100f),GUILayout.Height(100f))){       
    currItem =items[i];       
    }
    }else{
    GUILayout.Box("",GUILayout.Width(100f),GUILayout.Height(100f));     
    }
    }
    GUILayout.EndArea();   
    //    
    GUILayout.BeginArea(new Rect(360f,60f,100f,600f));   
    for(int i = 15; i < 20; i++){
    if(items[i]!=null){    
    if(GUILayout.Button(items[i].texture,GUILayout.Width(100f),GUILayout.Height(100f))){        
    currItem =items[i];       
    }
    }else{
    GUILayout.Box("",GUILayout.Width(100f),GUILayout.Height(100f));     
    }
    }
    GUILayout.EndArea();   
    //    
    GUILayout.BeginArea(new Rect(460f,60f,100f,600f));   
    for(int i = 20; i < 25; i++){
    if(items[i]!=null){    
    if(GUILayout.Button(items[i].texture,GUILayout.Width(100f),GUILayout.Height(100f))){
    currItem =items[i];       
    }
    }else{
    GUILayout.Box("",GUILayout.Width(100f),GUILayout.Height(100f));     
    }
    }
    GUILayout.EndArea();     
    }
    }


    Сообщение отредактировал Adom - Пятница, 28 Февраля 2014, 10:15
    LaushДата: Среда, 26 Февраля 2014, 21:36 | Сообщение # 5687
    почти ветеран
    Сейчас нет на сайте
    Почему на андроиде у меня не работают/нажимаются GUI.Button ?
    Только на компе работает.


    [PC/Android/iOS/WEB] 30 Days to survive
    [PC] Dead Defense
    [PC] Саламандра - история пирата
    NEBRДата: Среда, 26 Февраля 2014, 22:44 | Сообщение # 5688
    почти ветеран
    Сейчас нет на сайте
    Laush, эти гуишные штуки не работают на андроиде

    King Size #Gamiron12
    lentinantДата: Среда, 26 Февраля 2014, 23:21 | Сообщение # 5689
    ленивый программист
    Сейчас нет на сайте
    NEBR, все работает на андроиде.
    Laush, ты через Remote проверяешь?


    Когда-то тут будут ссылки на крутые проекты. Или нет.
    LaushДата: Среда, 26 Февраля 2014, 23:34 | Сообщение # 5690
    почти ветеран
    Сейчас нет на сайте
    lentinant, да, через remote. даже когда компилирую и устанавливаю так апк файл на андроиде, всё равно не работает.

    [PC/Android/iOS/WEB] 30 Days to survive
    [PC] Dead Defense
    [PC] Саламандра - история пирата


    Сообщение отредактировал Laush - Среда, 26 Февраля 2014, 23:35
    lentinantДата: Среда, 26 Февраля 2014, 23:43 | Сообщение # 5691
    ленивый программист
    Сейчас нет на сайте
    Цитата Laush ()
    да, через remote. даже когда компилирую и устанавливаю так апк файл на андроиде, всё равно не работает.

    Ну, тогда не знаю. У меня на Remote тоже не работало, но в компилированной версии все работает.


    Когда-то тут будут ссылки на крутые проекты. Или нет.
    LaushДата: Четверг, 27 Февраля 2014, 00:07 | Сообщение # 5692
    почти ветеран
    Сейчас нет на сайте
    Вот, гляньте что не так, может с логикой что то не так?
    Скрипт


    [PC/Android/iOS/WEB] 30 Days to survive
    [PC] Dead Defense
    [PC] Саламандра - история пирата
    PoqXertДата: Четверг, 27 Февраля 2014, 04:39 | Сообщение # 5693
    постоянный участник
    Сейчас нет на сайте
    Laush, а как ты на андроиде нажимаешь клавишу 'F'?
    Согласно твоему коду, у тебя кнопки не будут отображаться пока ты не нажмёшь 'F'.


    Расширения для Unity3D
    Блог программиста - PoqXert.ru
    lolskillДата: Четверг, 27 Февраля 2014, 07:13 | Сообщение # 5694
    почетный гость
    Сейчас нет на сайте
    Как вставлять рекламу для андроид игр на юнити? Кто работал с рекламой в играх? У какой конторы рекламу лучше выбрать?
    WookieДата: Четверг, 27 Февраля 2014, 11:47 | Сообщение # 5695
    Decembear
    Сейчас нет на сайте
    Как правильно пользоваться
    Цитата
    DrawTextureWithTexCoords
    ?
    Код

    GUI.DrawTextureWithTexCoords(new Rect(25,25,Screen.width - 50,Screen.height - 50),roll_layout,new Rect(0,0,1,1));

    Код такой.


    LaushДата: Четверг, 27 Февраля 2014, 12:11 | Сообщение # 5696
    почти ветеран
    Сейчас нет на сайте
    PoqXert, извини, скрипт не тот скинул, это для компа скрипт. Вот для андроида вот

    [PC/Android/iOS/WEB] 30 Days to survive
    [PC] Dead Defense
    [PC] Саламандра - история пирата
    WookieДата: Четверг, 27 Февраля 2014, 14:55 | Сообщение # 5697
    Decembear
    Сейчас нет на сайте
    Объясню свою проблему - вызываю GUI.DrawTextureWithTexCoords, а в итоге текстура получается растянутая, а мне нужна только часть изображения.

    lentinantДата: Четверг, 27 Февраля 2014, 22:22 | Сообщение # 5698
    ленивый программист
    Сейчас нет на сайте
    Цитата lolskill ()
    Как вставлять рекламу для андроид игр на юнити? Кто работал с рекламой в играх? У какой конторы рекламу лучше выбрать?

    AdMob. Они сейчас принадлежат Гуглу, у них есть уже готовые плагины с примерами (в частности, для юнити), советы по имплементации, возможность подключать рекламу с различных источников.


    Когда-то тут будут ссылки на крутые проекты. Или нет.
    NEBRДата: Пятница, 28 Февраля 2014, 09:47 | Сообщение # 5699
    почти ветеран
    Сейчас нет на сайте
    Цитата Wookie ()
    Объясню свою проблему - вызываю GUI.DrawTextureWithTexCoords, а в итоге текстура получается растянутая, а мне нужна только часть изображения.

    Если нужна только часть изображения, можно пойти совсем другим путем. Текстуру засунуть в материал, и изменять offset и scale материала (программно тоже можно это делать).
    Цитата lentinant ()
    Ну, тогда не знаю. У меня на Remote тоже не работало, но в компилированной версии все работает.

    А я решил что не работает потому что не далее чем три дня назад делал билд... Там как раз if(GUI.Button) - и он не работал ни в Ремоте, ни в скомпилированном виде...


    King Size #Gamiron12

    Сообщение отредактировал NEBR - Пятница, 28 Февраля 2014, 09:49
    AdomДата: Пятница, 28 Февраля 2014, 10:15 | Сообщение # 5700
    Печенька!
    Сейчас нет на сайте
    Вот еще вопрос я делал все тот-же инвентарь по урокам Alcatras так вот когда я назначаю в List Item то когда запускаю игру они от туда выходят т.е нужно заново при запущенной игре переназначать эти item. Кто поможет ?

    Вот код.
    Код
    using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;

    public class Inventory : MonoBehaviour {
    public List<Item> items = new List<Item>();
    public bool show = true;
    public GUISkin skin;
    public MouseLook camera;
    public MouseLook player;
    public float MaxMass=50;
    public float CurMass=0;
    [HideInInspector] public Item currItem;
    // Use this for initialization
    void Start () {
    RebuildMass();   
    }
    void AddMass(float mass){
    CurMass +=mass;

    }
    void RebuildMass(){   
    CurMass=0;
    for(int i=0; i < items.Count; i++){
    if(items[i]=null)     
    if(items[i].count > 0){     
    CurMass += items[i].count * items[i].mass;     
    }
    }    
    }
    // Update is called once per frame
    void Update () {
    if(Input.GetKeyDown(KeyCode.Tab)){
    show = !show;
    }
    if(show){    
    player.enabled = false;
    camera.enabled = false;
    }else{   
    player.enabled = true;
    camera.enabled = true;     
    }
    }
    void OnGUI(){
    if(show){    
    GUI.skin = skin;
    GUI.Window(0,new Rect(0f,0f,Screen.width,Screen.height),InventoryBody,"Inventory");
    }    
    }
    public void Use(Item item){   
    item.count--;
    RemoveItem(item);
    currItem =null;
    }
    public void RemoveItem(Item item){
    for(int i = 0; i < items.Count; i++){    
    if(items[i]==item){    
    items[i]=null;      
    }
    }
    }
    void InventoryBody (int id){   
    if(GUI.Button(new Rect(700f, Screen.height - 200f,150f,50f),"Выход")){
    show = false;
    currItem = null;
    player.enabled = true;
    camera.enabled = true;       
    }     
    if(currItem){
    GUI.DrawTexture(new Rect(600f,50f,80f,80f),currItem.texture);      
    GUI.color = Color.red;   
    GUI.Label(new Rect(700f,50f,400f,500f),"Описание");      
    GUI.color = Color.white;
    GUI.Box(new Rect(600f,50f,400f,300f),"");      
    GUI.Label(new Rect(700f,100f,400f,300f),currItem.discription);
    if(GUI.Button(new Rect(700,290,150,50),"Отмена")){
    currItem = null;      
    }
    if(GUI.Button(new Rect(700,230,150,50),"Использовать")){
    Use(currItem);    
    }     
    }      
    GUILayout.BeginArea(new Rect(60f,60f,100f,600f));   
    for(int i = 0; i < 5; i++){
    if(items[i]!=null){    
    if(GUILayout.Button(items[i].texture,GUILayout.Width(100f),GUILayout.Height(100f))){                    
    currItem =items[i];
    }
    }else{
    GUILayout.Box("",GUILayout.Width(100f),GUILayout.Height(100f));     
    }
    }
    GUILayout.EndArea();   
    //    
    GUILayout.BeginArea(new Rect(160f,60f,100f,600f));   
    for(int i = 5; i < 10; i++){
    if(items[i]!=null){    
    if(GUILayout.Button(items[i].texture,GUILayout.Width(100f),GUILayout.Height(100f))){        
    currItem =items[i];       
    }
    }else{
    GUILayout.Box("",GUILayout.Width(100f),GUILayout.Height(100f));     
    }
    }
    GUILayout.EndArea();   
    //
    GUILayout.BeginArea(new Rect(260f,60f,100f,600f));   
    for(int i = 10; i < 15; i++){
    if(items[i]!=null){    
    if(GUILayout.Button(items[i].texture,GUILayout.Width(100f),GUILayout.Height(100f))){       
    currItem =items[i];       
    }
    }else{
    GUILayout.Box("",GUILayout.Width(100f),GUILayout.Height(100f));     
    }
    }
    GUILayout.EndArea();   
    //    
    GUILayout.BeginArea(new Rect(360f,60f,100f,600f));   
    for(int i = 15; i < 20; i++){
    if(items[i]!=null){    
    if(GUILayout.Button(items[i].texture,GUILayout.Width(100f),GUILayout.Height(100f))){        
    currItem =items[i];       
    }
    }else{
    GUILayout.Box("",GUILayout.Width(100f),GUILayout.Height(100f));     
    }
    }
    GUILayout.EndArea();   
    //    
    GUILayout.BeginArea(new Rect(460f,60f,100f,600f));   
    for(int i = 20; i < 25; i++){
    if(items[i]!=null){    
    if(GUILayout.Button(items[i].texture,GUILayout.Width(100f),GUILayout.Height(100f))){
    currItem =items[i];       
    }
    }else{
    GUILayout.Box("",GUILayout.Width(100f),GUILayout.Height(100f));     
    }
    }
    GUILayout.EndArea();     
    }
    }
    Поиск:

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