Прорисовка нескольких текстур через DrawTexture

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

Прорисовка нескольких текстур через DrawTexture

Сообщение Volandpro 25 окт 2012, 09:52

У меня есть объект, он передает свою позицию другому объекту, который рисует текстурку по этим параметрам.
Скрипт, передающий инфу
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class MapIcon_1 : MonoBehaviour {
        GameObject map;
    public   Vector3 plPosition;    
        // Use this for initialization
        void Start () {
                map=GameObject.FindGameObjectWithTag("Map");
               
        }
       
        // Update is called once per frame
        void Update () {
            map.GetComponent<MapIcon>().Position(transform.position);
        }
}


Скрипт, принимающий инфу
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class MapIcon : MonoBehaviour {
        public Texture text;
    public Vector3 plPosition;    
        // Use this for initialization
        void Start () {
 
        }
        public void Position(Vector3 pos)
        {
                plPosition=pos;
               
        }
                // Update is called once per frame
        void Update () {
        }
        void OnGUI() {
                GUI.DrawTexture(new Rect(plPosition.x/10, plPosition.z/10, 60, 60), text);
                                 }
}


Все хорошо работает. Но как сделать, чтобы этот объект принимал параметры не от одного, а например от двух объектов и соответственно рисовал 2 текстуры? Была идея как-то реализовать через List, но я не могу сформулировать и понять, как это сделать) P.S. надо как-то сделать Лист позиций и рисовать текстурку через цикл. Вот только как сделать этот Лист?(



P.P.S. написал этот пост, мне стало стыдно, что я такой неумный, допер сам) Если кому то надо то вот
Отправляем инфу
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class MapIcon_1 : MonoBehaviour {
        GameObject map;
        public int i;
    public   Vector3 plPosition;    
        // Use this for initialization
        void Start () {
                map=GameObject.FindGameObjectWithTag("Map");
                i=map.GetComponent<MapIcon>().Add(transform.position);
        }
       
        // Update is called once per frame
        void Update () {
            map.GetComponent<MapIcon>().Position(transform.position,i);
        }
}


Принимаем инфу и рисуем текстурки
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class MapIcon : MonoBehaviour {
        public Texture text;
        public List<Vector3> plPositon;
        // Use this for initialization

        public int Add(Vector3 pos)
        {
                plPositon.Add(pos);
                return plPositon.Count;
        }
        public void Position(Vector3 pos,int i)
        {
                plPositon[i-1]=pos;    
        }
        // Update is called once per frame

        void OnGUI() {
                for(int i=0;i<plPositon.Count;i++)
                {
                GUI.DrawTexture(new Rect(plPositon[i].x/2000f*150f,-plPositon[i].z/2000f*150f+150, 6, 6), text);
                }
            }
}


Единственный вопрос - будут ли такие скрипты сильно грузить систему?)
Аватара пользователя
Volandpro
UNITрон
 
Сообщения: 242
Зарегистрирован: 19 авг 2012, 17:07

Re: Прорисовка нескольких текстур через DrawTexture

Сообщение KBEP 25 окт 2012, 17:14

Каждый раз в Update перезаписывать позицию объекта не комильфо, лучше один раз записать туда ссылку на трансформацию обекта:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class MapIcon_1 : MonoBehaviour {
        GameObject map;
        //public int i;
    public   Vector3 plPosition;    
        // Use this for initialization
        void Start () {
                map=GameObject.FindGameObjectWithTag("Map");
                /*i=*/map.GetComponent<MapIcon>().Add(transform/*.position*/);
        }
       
        // Update is called once per frame
        /*void Update () {
            map.GetComponent<MapIcon>().Position(transform.position,i);
        }*/

}


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

public class MapIcon : MonoBehaviour {
        public Texture text;
        public List</*Vector3*/Transform> plPositon;
        // Use this for initialization

        public /*int*/void Add(/*Vector3 pos*/Transform trsm)
        {
                plPositon.Add(trsm);
                //return plPositon.Count;
        }
        /*public void Position(Vector3 pos,int i)
        {
                plPositon[i-1]=pos;    
        }*/

        // Update is called once per frame

        void OnGUI() {
                for(int i=0;i<plPositon.Count;i++)
                {
                GUI.DrawTexture(new Rect(plPositon[i].position.x/2000f*150f,-plPositon[i].position.z/2000f*150f+150, 6, 6), text);
                }
            }
}
Аватара пользователя
KBEP
Старожил
 
Сообщения: 598
Зарегистрирован: 24 сен 2012, 23:23
Откуда: Калининград, СПб, Северодвинск


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

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

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