我想轉換(和理解)這個簡化的代碼從unityscript到C#:統一C#數組類型的錯誤(從unityscript轉換時)
private var actionList = new Array();
function Start()
{
actionList = new Array(12);
for(i=0; i<actionList.length; i++)
actionList[i] = new Array(4);
for(i=0; i<actionList.length; i++)
{
actionList[i][1] = Rect(50+(i*55),50, 50, 50);
actionList[i][2] = new Array("action");
}
actionList[0][3] = KeyCode.Alpha1;
actionList[1][3] = KeyCode.Alpha2;
actionList[2][3] = KeyCode.Alpha3;
actionList[3][3] = KeyCode.Alpha4;
actionList[4][3] = KeyCode.Alpha5;
actionList[5][3] = KeyCode.Alpha6;
actionList[6][3] = KeyCode.Alpha7;
actionList[7][3] = KeyCode.Alpha8;
actionList[8][3] = KeyCode.Alpha9;
actionList[9][3] = KeyCode.Alpha0;
actionList[10][3] = KeyCode.Minus;
actionList[11][3] = KeyCode.Equals;
}
function OnGUI()
{
for(i=0; i<actionList.length; i++)
{
if(actionList[i][1] != null)
drawButton(actionList[i][1]);
}
}
function drawButton(rect)
{
GUI.Button(rect, "Hello");
}
完整的代碼可以在這裏找到:Creating a Drag and Drop Spell Bar
我在這拍在C#(而忽略了keymappings):
using UnityEngine;
using System.Collections.Generic;
public class SpellBar : MonoBehaviour
{
private object[][] actionList;
void Start()
{
actionList = new object[12][];
for (int i=0; i<actionList.Length; i++)
actionList[i] = new object[4];
for (int i=0; i<actionList.Length; i++)
{
actionList[i][1] = new Rect(50+(i*55), 50, 50, 50);
}
//Keymappings
}
void OnGUI()
{
for(int i=0; i<actionList.Length; i++)
{
if(actionList[i][1] != null)
DrawButton(actionList[i][1]);
}
}
void DrawButton(Rect rect)
{
GUI.Button(rect,"Hello");
}
}
錯誤我來到這裏是OnGui,使用DrawButton時(的ActionList i)。 錯誤:。不能將「對象」表情輸入「UnityEngine,矩形」
我沒有在任何unityscript或有經驗的程序員C#我搜索谷歌幾個小時,試圖解釋,的ArrayList等,但不能找到解決方案提前thnx!
編輯27-11-2012
所以,我遇到了一個新的相關問題。不知道我是否應該在這裏編輯它,但我不能在回覆中正確格式。
在我試圖轉換的JavaScript代碼中,以下代碼用於存儲數組中的類:
var openSlot = getNextSlot(actionList);
if(openSlot != -1)
actionList[openSlot][0] = new classEvilSmile();
雖然這不完全是我想要的方式,但我希望能夠在數組中存儲方法,但我無法在C#中找到一種方法。這是不可能的嗎?
(例)我試圖做這樣的事情:
//In addition to what I posted above
void Start()
{
actionList[i][0] = void FireBall();
}
void FireBall()
{
Texture2D icon = Resources.Load("icon_fireball") as Texture2D;
String description = new String("Shoot a ball of fire");
//etc
}
這不是Java。它可能是Javascript,但它不是Java。 –
當我聽到有人混淆「Java」和「Javascript」時,我很畏縮。有些表面的相似點 - 但在最重要的方面,「Java」和「Javascript」是分開的。我編輯了帖子並將標題更改爲「Javascript」。 – paulsm4
Thnx,編輯Java到JavaScript。 N00b – downdf