Okay
Inv2 Script
//Èíâåíòàðü
var inventory : Array;
var doWindow : boolean = false;
//Êàðòèíêà ïóñòîãî ñëîòà
public var emptyTex : Texture;
//Ðàçìåð èíâåíòàðÿ (êîë-âî ÿ÷ååê)
public var inventorySizeX = 4;
public var inventorySizeY = 5;
//Ðàçìåð ÿ÷åéêè ïî âûñîòå è øèðèíå
var iconWidthHeight = 40;
//Ïðîñòðàíñòâî ìåæäó ñëîòàìè (â X è Y)
var spacing = 4;
//Ïîçèöèÿ èíâåíòàðÿ
public var offSet = Vector2( 100, 100 );
// Íàçíà÷àþòñÿ ïî ÷åë÷êàì êíîïîê ìûøêè (ñì. Update())
private var itemImage : Texture2D;
//êëàññ è ïðåäìåòàõ èíâåíòàðÿ
class InventoryItem
{
//Ýòîò ïóíêò îòíîñèòñÿ ê Ãåéìîáúåêòó
var worldObject : GameObject;
//Òî, êàê ìû áóäåì âèäåòü åãî â èíâåíòàðå
var texRepresentation : Texture2D;
}
// Ñîçäàåì èíâåíòàðü
function Awake()
{
inventory = new Array(inventorySizeX);
for( var i = 0; i < inventory.length; i ++ )
{
inventory[i] = new Array(inventorySizeY);
}
}
function OnGUI() {
var texToUse : Texture2D;
var currentInventoryItem : InventoryItem;
//Ïåðåõîä ÷åðåç êàæäóþ ñòðîêó
for( var i = 0; i < inventory.length; i ++ )
{
// è êàæäûé ñòîëáåö
for( var k = 0; k < inventory[i].length; k ++ )
{
texToUse = emptyTex;
currentInventoryItem = inventory[i][k];
//Åñëè åñòü ïóíêò â I-é ñòðîêè è K-ãî ñòîëáöà, íàðèñîâàòü
if( inventory[i][k] != null )
{
texToUse = currentInventoryItem.texRepresentation;
}
var it = GUI.Button( new Rect( offSet.x+k*(iconWidthHeight+spacing), offSet.y+i*(iconWidthHeight+spacing), iconWidthHeight, iconWidthHeight ), texToUse );
GUI.Button( new Rect( offSet.x+k*(iconWidthHeight+spacing), offSet.y+i*(iconWidthHeight+spacing), iconWidthHeight, iconWidthHeight ), texToUse );
var w : int = 0;
var h : int = 0;
if (it){// (inventory[i][k]==!null){
//òóò áóäåò äðîï
Debug.Log("YES!!!!!!!!!!!!!!!!!!!");
}
}
}
}
function AddItem( item : InventoryItem )
{
//Ïðîõîä ïî êàæäîé ñòðîêå
for( var i = 0; i < inventory.length; i ++ )
{
// è êàæäîìó ñòîëáöó
for( var k = 0; k < inventory[i].length; k ++ )
{
//Åñëè ïîçèöèÿ ïóñòàÿ, äîáàâèòü íîâûé ïóíêò è âûõîä èç ôóíêöèè
if( inventory[i][k] == null )
{
inventory[i][k] = item;
return;
}
}
}
//Åñëè èíâåíòàðü ïîëîí, òóò ÷òî-íèòü äåëàåì
}
function AddItem( worldObject : GameObject, texRep : Texture2D )
{
var newItem = new InventoryItem();
newItem.worldObject = worldObject;
newItem.texRepresentation = texRep;
AddItem( newItem );
}
[END CODE][/COLOR][/COLOR]
[COLOR="navy"]
Item Script
[COLOR="blue"][CODE]
public var InventoryIcon : Texture2D;
public var ItemDescription : String;
public var ItemClass : String;
public var defence : int;
public var damage : int;
var doWindow : boolean = false;
function OnMouseOver() {
doWindow=true;
}
function OnMouseExit() {
doWindow=false;
}
function OnGUI() {
if (doWindow)
GUI.Window (0, Rect (110,10,200,80), DoWindow, "Info");
}
function OnMouseDown() {
var inv = FindObjectOfType(inv2);
inv.AddItem( gameObject, InventoryIcon );
Destroy(this.gameObject);
Debug.Log("item picked");
}
function DoWindow (windowID : int) {
GUI.Label (new Rect(5, 15, 200, 25), "Item:" + ItemDescription);
GUI.Label (new Rect(5, 30, 90, 25), "Class:" + ItemClass);
GUI.Label (new Rect(5, 45, 90, 25), "Defence:" + defence);
GUI.Label (new Rect(5, 60, 90, 25), "Damage:" + damage);
}
[END CODE][/COLOR][/COLOR]
[COLOR="magenta"]DraggableGUIElement script
[CODE]
using UnityEngine;
using System.Collections;
public class DraggableGUIElement : MonoBehaviour
{
[System.Serializable]
public class Border
{
public float minX, maxX, minY, maxY;
}
public Border border;
Vector3 lastMousePosition;
void OnMouseDown()
{
lastMousePosition = GetClampedMousePosition();
}
Vector3 GetClampedMousePosition()
{
Vector3 mousePosition = Input.mousePosition;
mousePosition.x = Mathf.Clamp(mousePosition.x, 0f, Screen.width);
mousePosition.y = Mathf.Clamp(mousePosition.y, 0f, Screen.height);
return mousePosition;
}
void OnMouseDrag()
{
Vector3 delta = GetClampedMousePosition() - lastMousePosition;
delta = Camera.main.ScreenToViewportPoint(delta);
transform.position += delta;
Vector3 position = transform.position;
position.x = Mathf.Clamp(position.x, border.minX, border.maxX);
position.y = Mathf.Clamp(position.y, border.minY, border.maxY);
transform.position = position;
lastMousePosition = GetClampedMousePosition();
}
}
[END CODE][/COLOR]