передача объекта из файла в файл
|
|
88mml72 | Дата: Пятница, 11 Июля 2014, 00:38 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| файл 1. сюда добавляется объект в массив
using UnityEngine; using System.Collections; using System.Collections.Generic;
public class UnitBase : MonoBehaviour { List<GameObject> UnitPlayerBase = new List<GameObject>();
public void UnitPlayerBaseFunction(GameObject g) {
UnitPlayerBase.Add(g); Debug.Log(UnitPlayerBase.Count); } } файл 2 отсюда вызывается метод
............................................................................... UnitBase tempManager; ......................................................
if (hit.collider.tag == "Player") { tempManager.UnitPlayerBaseFunction(TransmissionObject); } при передаче возникает ошибка что мол пустая ссылка а если использовать ref иле out пишет что использование этих модификаторов для динамических объектов недопустимо как я понял
|
|
| |
robertono | Дата: Пятница, 11 Июля 2014, 02:15 | Сообщение # 2 |
Чокнутый Кот
Сейчас нет на сайте
| 88mml72, наверняка TransmissionObject пуст
|
|
| |
Ranger | Дата: Пятница, 11 Июля 2014, 05:55 | Сообщение # 3 |
почти ветеран
Сейчас нет на сайте
| tempManager != null ??? TransmissionObject != null ???
Полный текст ошибки укажите.
|
|
| |
OpenGOO | Дата: Пятница, 11 Июля 2014, 10:58 | Сообщение # 4 |
почти ветеран
Сейчас нет на сайте
| ты ссылке присвоил объект?
Мои проекты: - Свободный и открытый клон World Of Goo - TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)
[GameMaker: Studio v1.4.9999]
|
|
| |
88mml72 | Дата: Пятница, 11 Июля 2014, 11:52 | Сообщение # 5 |
частый гость
Сейчас нет на сайте
| извиняюсь вместо transmissionobject передается hit.collider.gameObject но он полюбому не пуст Добавлено (11.07.2014, 11:52) ---------------------------------------------
Цитата Полный текст ошибки укажите.
NullReferenceException: Object reference not set to an instance of an object DetectClicksAndTouches.Update () (at Assets/camera/DetectClicksAndTouches.cs:58)
|
|
| |
Ranger | Дата: Пятница, 11 Июля 2014, 12:40 | Сообщение # 6 |
почти ветеран
Сейчас нет на сайте
| Цитата 88mml72 ( ) NullReferenceException: Object reference not set to an instance of an object DetectClicksAndTouches.Update () (at Assets/camera/DetectClicksAndTouches.cs:58) не установлена ссылка на объект.
58 строчку скрипта в студию
Сообщение отредактировал Ranger - Пятница, 11 Июля 2014, 12:44 |
|
| |
88mml72 | Дата: Пятница, 11 Июля 2014, 12:56 | Сообщение # 7 |
частый гость
Сейчас нет на сайте
| using UnityEngine; using System.Collections; using System.Collections.Generic;
public class DetectClicksAndTouches : MonoBehaviour { //This variable is optional; if not set it will default to the main camera //This is so that you can detect clicks/touches on a separate UI Camera //This variable does NOT update in real time public Camera detectionCamera; //This variable adds a Debug.Log call to show what was touched public bool debug = false; //This is the actual camera we reference in the update loop, set in Start() private Camera _camera; //List<GameObject> UnitPlayerBase = new List<GameObject>(); void Start() { if(detectionCamera != null) { _camera = detectionCamera; } else { _camera = Camera.main; } } // Update is called once per frame void Update () { Ray ray; RaycastHit hit; if(Input.GetMouseButtonDown(0)) //Check to see if we've clicked { //Set up our ray from screen to scene ray = _camera.ScreenPointToRay(Input.mousePosition); //If we hit... if(Physics.Raycast (ray, out hit, Mathf.Infinity)) { //Tell the system what we clicked something if in debug if(debug) { Debug.Log("You clicked " + hit.collider.gameObject.name,hit.collider.gameObject); } if (hit.collider.tag == "Player") {
UnitBase.temp.UnitPlayerBaseFunction(hit.collider.gameObject); //UnitPlayerBase.Add(hit.collider.gameObject);
//Debug.Log(UnitPlayerBase.Count); }
//Run the Clicked() function on the clicked object
} hit.transform.gameObject.SendMessage("Clicked", hit.point, SendMessageOptions.DontRequireReceiver); } if(Input.GetMouseButtonDown(1)) //Check to see if we've clicked { //Set up our ray from screen to scene ray = _camera.ScreenPointToRay(Input.mousePosition); //If we hit... if(Physics.Raycast (ray, out hit, Mathf.Infinity)) { //Tell the system what we clicked something if in debug if(debug) { Debug.Log("You right clicked " + hit.collider.gameObject.name,hit.collider.gameObject); } //Run the Clicked() function on the clicked object hit.transform.gameObject.SendMessage("RightClicked", hit.point, SendMessageOptions.DontRequireReceiver); } } } }[Добавлено (11.07.2014, 12:56) --------------------------------------------- это первый файл вот второй (чуть код сменил)
using UnityEngine; using System.Collections; using System.Collections.Generic;
public class UnitBase : MonoBehaviour { public static UnitBase temp; List<GameObject> UnitPlayerBase = new List<GameObject>();
public void UnitPlayerBaseFunction(GameObject g) {
UnitPlayerBase.Add(g); Debug.Log(UnitPlayerBase.Count); } }
Сообщение отредактировал 88mml72 - Пятница, 11 Июля 2014, 12:54 |
|
| |
Ranger | Дата: Пятница, 11 Июля 2014, 13:17 | Сообщение # 8 |
почти ветеран
Сейчас нет на сайте
| Цитата 88mml72 ( ) public static UnitBase temp; Цитата 88mml72 ( ) UnitBase.temp.UnitPlayerBaseFunction(hit.collider.gameObject); в классе UnitBase добавьте метод;
void Awake(){ temp = this; }
Сообщение отредактировал Ranger - Пятница, 11 Июля 2014, 13:19 |
|
| |
OpenGOO | Дата: Пятница, 11 Июля 2014, 16:21 | Сообщение # 9 |
почти ветеран
Сейчас нет на сайте
| Ещё как вариант добавить в классе UnitBase статический конструктор
static UnitBase() { temp = new UnitBase(); }
Мои проекты: - Свободный и открытый клон World Of Goo - TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)
[GameMaker: Studio v1.4.9999]
|
|
| |
Ranger | Дата: Пятница, 11 Июля 2014, 16:30 | Сообщение # 10 |
почти ветеран
Сейчас нет на сайте
| Цитата OpenGOO ( ) static UnitBase() { temp = new UnitBase(); } Наследники монобеха через new не создаются. Цитата "You are trying to create a MonoBehaviour using the 'new' keyword. "
Сообщение отредактировал Ranger - Пятница, 11 Июля 2014, 16:33 |
|
| |
88mml72 | Дата: Пятница, 11 Июля 2014, 18:28 | Сообщение # 11 |
частый гость
Сейчас нет на сайте
| Цитата void Awake(){ temp = this; }
с данным методом заработало, спасибо
|
|
| |