вот скрипт на инвентарь:
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class oooiuuo : MonoBehaviour {
int j;
public GameObject contaner;
public int ColE4 = 0;
public GameObject invt;
List<Item> list;
void Start () {
Screen.lockCursor = true;
Cursor.visible = false;
list = new List<Item>();
}
void Update () {
if (Input.GetKeyUp (KeyCode.E) & ColE4 < 12) {
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast (ray, out hit, 3)) {
Item item = hit.collider.GetComponent<Item> ();
if (item != null) {
list.Add (item);
Destroy (hit.collider.gameObject);
ColE4 += 1;
}
}
}
if (Input.GetKeyUp (KeyCode.Tab)) {
Cursor.visible = false;
Screen.lockCursor = true;
if (ColE4 < 0)
ColE4 = 0;
if (invt.activeSelf) {
invt.SetActive (false);
for (j = 0; j < invt.transform.childCount; j += 1) {
if (invt.transform.GetChild (j).transform.GetChild (0).gameObject) {
Destroy (invt.transform.GetChild (j).transform.GetChild (0).gameObject);
}
}
}
else if (!invt.activeSelf) {
Cursor.visible = true;
Screen.lockCursor = false;
invt.SetActive (true);
int count = list.Count;
for (int i = 0; i < count; i++) {
Item it = list [i];
if (invt.transform.childCount >= i & i <= ColE4) {
GameObject img = Instantiate (contaner);
img.transform.SetParent (invt.transform.GetChild (i).transform);
img.GetComponent<Image> ().sprite = Resources.Load<Sprite> (it.Sprite);
img.GetComponent<Button>().onClick.AddListener(() => remove(it,img));
}
else break;
}
}
}
}
void remove (Item it,GameObject Obj)
{
GameObject newo = Instantiate<GameObject>(Resources.Load<GameObject>(it.Prefab));
newo.transform.position = transform.position + transform.forward + transform.up;
Destroy (Obj);
list.Remove (it);
ColE4 -= 1;
invt.SetActive (false);
Cursor.visible = false;
Screen.lockCursor = true;
for (j = 0; j < invt.transform.childCount; j += 1) {
if (invt.transform.GetChild (j).transform.GetChild (0).gameObject) {
Destroy (invt.transform.GetChild (j).transform.GetChild (0).gameObject);
}
}
}
}
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class oooiuuo : MonoBehaviour {
int j;
public GameObject contaner;
public int ColE4 = 0;
public GameObject invt;
List<Item> list;
void Start () {
Screen.lockCursor = true;
Cursor.visible = false;
list = new List<Item>();
}
void Update () {
if (Input.GetKeyUp (KeyCode.E) & ColE4 < 12) {
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast (ray, out hit, 3)) {
Item item = hit.collider.GetComponent<Item> ();
if (item != null) {
list.Add (item);
Destroy (hit.collider.gameObject);
ColE4 += 1;
}
}
}
if (Input.GetKeyUp (KeyCode.Tab)) {
Cursor.visible = false;
Screen.lockCursor = true;
if (ColE4 < 0)
ColE4 = 0;
if (invt.activeSelf) {
invt.SetActive (false);
for (j = 0; j < invt.transform.childCount; j += 1) {
if (invt.transform.GetChild (j).transform.GetChild (0).gameObject) {
Destroy (invt.transform.GetChild (j).transform.GetChild (0).gameObject);
}
}
}
else if (!invt.activeSelf) {
Cursor.visible = true;
Screen.lockCursor = false;
invt.SetActive (true);
int count = list.Count;
for (int i = 0; i < count; i++) {
Item it = list [i];
if (invt.transform.childCount >= i & i <= ColE4) {
GameObject img = Instantiate (contaner);
img.transform.SetParent (invt.transform.GetChild (i).transform);
img.GetComponent<Image> ().sprite = Resources.Load<Sprite> (it.Sprite);
img.GetComponent<Button>().onClick.AddListener(() => remove(it,img));
}
else break;
}
}
}
}
void remove (Item it,GameObject Obj)
{
GameObject newo = Instantiate<GameObject>(Resources.Load<GameObject>(it.Prefab));
newo.transform.position = transform.position + transform.forward + transform.up;
Destroy (Obj);
list.Remove (it);
ColE4 -= 1;
invt.SetActive (false);
Cursor.visible = false;
Screen.lockCursor = true;
for (j = 0; j < invt.transform.childCount; j += 1) {
if (invt.transform.GetChild (j).transform.GetChild (0).gameObject) {
Destroy (invt.transform.GetChild (j).transform.GetChild (0).gameObject);
}
}
}
}
вот скрипт на перетягивание объекта:
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class Drag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler {
public Transform canvas;
public Transform old;
// Use this for initialization
void Start () {
canvas = GameObject.Find ("Canvas").transform;
}
void Update()
{
if (!transform.gameObject.activeSelf)
Destroy (gameObject);
}
public void OnBeginDrag (PointerEventData eventData)
{
old = transform.parent;
transform.SetParent (canvas);
}
public void OnDrag (PointerEventData eventData)
{
transform.position = Input.mousePosition;
canvas = transform.parent;
GetComponent<CanvasGroup> ().blocksRaycasts = false;
}
public void OnEndDrag (PointerEventData eventData)
{
GetComponent<CanvasGroup> ().blocksRaycasts = true;
if(transform.parent.childCount > 1){
transform.SetParent (old);
}
if (transform.parent == canvas) {
transform.SetParent (old);
}
}
}
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class Drag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler {
public Transform canvas;
public Transform old;
// Use this for initialization
void Start () {
canvas = GameObject.Find ("Canvas").transform;
}
void Update()
{
if (!transform.gameObject.activeSelf)
Destroy (gameObject);
}
public void OnBeginDrag (PointerEventData eventData)
{
old = transform.parent;
transform.SetParent (canvas);
}
public void OnDrag (PointerEventData eventData)
{
transform.position = Input.mousePosition;
canvas = transform.parent;
GetComponent<CanvasGroup> ().blocksRaycasts = false;
}
public void OnEndDrag (PointerEventData eventData)
{
GetComponent<CanvasGroup> ().blocksRaycasts = true;
if(transform.parent.childCount > 1){
transform.SetParent (old);
}
if (transform.parent == canvas) {
transform.SetParent (old);
}
}
}
Но вот в чем проблема объект который я перетащил после запуска раздваивается. Я выяснил в чем проблема. После перемещения объекта инвентарь запоминает место где объект был раньше. И после перезапуска он создает новый на том месте где он появился в первый раз!
ПОДСКАЖИТЕ КАК ВСТАВИТЬ ВИДЕО, ТОГДА Я СМОГУ ВАМ ВСЕ НАГЛЯДНО ПОКАЗАТЬ!