Ⅰ unity3d做游戲需要克隆一塊一塊的圖片,比如消消樂,連連看,保衛蘿卜
有個組件GridLayoutGroup 自動布局組
可以滿足固定序列的排序 至於圖片的變換 移動特效 用代碼操作
具體用法 請網路
Ⅱ 求連連看源代碼
連連看的代碼(基本演算法)加了部分注釋
import java.awt.*;
import java.awt.event.*;
public class lianliankan implements ActionListener
{
static String s="no"; //用來紀錄點擊按鈕的信息
int x0=0,y0=0,x=0,y=0,n1=0,n2=0; //用來紀錄按鈕的位置信息
Frame f,f1;
Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b10; //用比較笨的方法添加了
Button b11,b12,b13,b14,b15,b16,b17,b18; //30個按鈕來實現游戲界面
Button b19,b20,b21,b22,b23,b24,b25; //可以用數組實現,這是本人
Button b26,b27,b28,b29,b30,bc; //學java時,入門的聯系,所以
Button b,ba,br,bt1,bt2; //有些東西很業余!!嘻嘻
Panel p1,p2,p3;
TextField t; //用來顯示一些隨機信息,方法是下面的guli().
Label l;
int d[][]={ //用來和界面的按鈕建立映射關系
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0}
};
public static void main(String[] args)
{
lianliankan t=new lianliankan();
t.suiji();
t.go();
}
public void actionPerformed(ActionEvent e) //再來一次按鈕的響應事件。
{
int d[][]={
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0}
};
this.d=d;
suiji();
f.setVisible(false);
f1.setVisible(false);
s="no";
go();
}
public void go()//初始化界面
{
l=new Label("親愛的玩家,");
f=new Frame("連連看");
t=new TextField();
p2=new Panel();
p1=new Panel();
p3=new Panel();
bc=new Button("退出");
br=new Button("重列");
b=new Button();
b1=new Button(String.valueOf(d[1][1]));
b2=new Button(String.valueOf(d[1][2]));
b3=new Button(String.valueOf(d[1][3]));
b4=new Button(String.valueOf(d[1][4]));
b5=new Button(String.valueOf(d[1][5]));
b6=new Button(String.valueOf(d[2][1]));
b7=new Button(String.valueOf(d[2][2]));
b8=new Button(String.valueOf(d[2][3]));
b9=new Button(String.valueOf(d[2][4]));
b10=new Button(String.valueOf(d[2][5]));
b11=new Button(String.valueOf(d[3][1]));
b12=new Button(String.valueOf(d[3][2]));
b13=new Button(String.valueOf(d[3][3]));
b14=new Button(String.valueOf(d[3][4]));
b15=new Button(String.valueOf(d[3][5]));
b16=new Button(String.valueOf(d[4][1]));
b17=new Button(String.valueOf(d[4][2]));
b18=new Button(String.valueOf(d[4][3]));
b19=new Button(String.valueOf(d[4][4]));
b20=new Button(String.valueOf(d[4][5]));
b21=new Button(String.valueOf(d[5][1]));
b22=new Button(String.valueOf(d[5][2]));
b23=new Button(String.valueOf(d[5][3]));
b24=new Button(String.valueOf(d[5][4]));
b25=new Button(String.valueOf(d[5][5]));
b26=new Button(String.valueOf(d[6][1]));
b27=new Button(String.valueOf(d[6][2]));
b28=new Button(String.valueOf(d[6][3]));
b29=new Button(String.valueOf(d[6][4]));
b30=new Button(String.valueOf(d[6][5]));
p3.setLayout(null);
p1.setSize(250,300);
p2.setSize(100,40);
p3.setSize(300,30);
t.setSize(60,30);
l.setSize(70,30);
p1.setLayout(new GridLayout(6,5));
p1.setBackground(Color.pink);
p1.setLocation(100,100);
p2.setLocation(0,400);
p3.setLocation(50,50);
t.setLocation(230,2);
l.setLocation(150,2);
bc.setLocation(0,40);
br.setLocation(0,100);
f.add(p1);
f.add(p2);
f.add(p3);
p3.add(l);
p3.add(t);
p2.add(bc);
p2.add(br);
p1.add(b1);
p1.add(b2);
p1.add(b3);
p1.add(b4);
p1.add(b5);
p1.add(b6);
p1.add(b7);
p1.add(b8);
p1.add(b9);
p1.add(b10);
p1.add(b11);
p1.add(b12);
p1.add(b13);
p1.add(b14);
p1.add(b15);
p1.add(b16);
p1.add(b17);
p1.add(b18);
p1.add(b19);
p1.add(b20);
p1.add(b21);
p1.add(b22);
p1.add(b23);
p1.add(b24);
p1.add(b25);
p1.add(b26);
p1.add(b27);
p1.add(b28);
p1.add(b29);
p1.add(b30);
f.pack();
f.setBounds(280,100,500,450);
f.setResizable(false);
f.setVisible(true);
bc.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
ex();
}
});
br.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
chonglie();
}
});
b1.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(1,1,b1);
}
});
b2.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(1,2,b2);
}
});
b3.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(1,3,b3);
}
});
b4.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(1,4,b4);
}
});
b5.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(1,5,b5);
}
});
b6.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(2,1,b6);
}
});
b7.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(2,2,b7);
}
});
b8.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(2,3,b8);
}
});
b9.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(2,4,b9);
}
});
b10.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(2,5,b10);
}
});
b11.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(3,1,b11);
}
});
b12.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(3,2,b12);
}
});
b13.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(3,3,b13);
}
});
b14.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(3,4,b14);
}
});
b15.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(3,5,b15);
}
});
b16.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(4,1,b16);
}
});
b17.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(4,2,b17);
}
});
b18.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(4,3,b18);
}
});
b19.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(4,4,b19);
}
});
b20.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(4,5,b20);
}
});
b21.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(5,1,b21);
}
});
b22.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(5,2,b22);
}
});
b23.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(5,3,b23);
}
});
b24.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(5,4,b24);
}
});
b25.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(5,5,b25);
}
});
b26.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(6,1,b26);
}
});
b27.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(6,2,b27);
}
});
b28.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(6,3,b28);
}
});
b29.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(6,4,b29);
}
});
b30.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
wei(6,5,b30);
}
});
}
public void ex() //退出界面,可用diolog來實現有模式的類型,更加符合
{
f1=new Frame("游戲作業");
f1.setLayout(new GridLayout(1,1));
bt1=new Button("確定退出");
bt2=new Button("再來一局");
f1.add(bt1);
f1.add(bt2);
f1.pack();
f1.setBounds(400,250,90,60);
f1.setResizable(false);
f1.show();
f1.setVisible(true);
bt1.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
System.exit(0);
}
});
bt2.addActionListener(this);
}
public void suiji() //產生隨機數,來填充游戲界面對應的數組的各個位置
{
int m,n,k=0,k1,k2,k3;
for(m=1;m<=15;m++)
{
k1=(int)(Math.random()*25+1);
for(n=1;n<=2;n++)
{
k2=(int)(Math.random()*6+1);
k3=(int)(Math.random()*5+1);
while(d[k2][k3]!=0 && k!=30)
{
k2=(int)(Math.random()*6+1);
k3=(int)(Math.random()*5+1);
}
this.d[k2][k3]=k1;
k++;
}
}
}
public void guli() //隨機信息
{
int l=0;
t.setText("");
l=(int)(Math.random()*10);
System.out.println(l);
switch(l)
{
case 1:
t.setText("好!加油!");
break;
case 3:
t.setText("你真棒!");
break;
case 5:
t.setText("加快速度!");
break;
case 6:
t.setText("不錯啊!");
break;
case 8:
t.setText("加油吧!");
break;
case 9:
t.setText("夠聰明!");
break;
default:
break;
}
}
public void chonglie() //重列方法
{
int save[],i,j,n=0,k2,k3,k;
int d[][]={
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0}
};
save=new int[30];
for(n=0;n<30;n++)
save[n]=0; //定義一個數組來保存當前的每個按鈕位置上的信息
n=0;
for(i=0;i<=6;i++)
for(j=0;j<=5;j++)
{
if(this.d[i][j]!=0)
{
save[n]=this.d[i][j];
n++;
}
}
n=n-1;
this.d=d;
while(n>=0) //產生隨機位置,放置按鈕
{
k2=(int)(Math.random()*6+1);
k3=(int)(Math.random()*5+1);
while(d[k2][k3]!=0)
{
k2=(int)(Math.random()*6+1);
k3=(int)(Math.random()*5+1);
}
this.d[k2][k3]=save[n];
n--;
}
f.setVisible(false);
s="no"; //這里一定要將按鈕點擊信息歸為初始
go();
ling();
}
public void ling() //將數組中為零的成員對應的按鈕消去
{ //用按鈕類型的數組實現會簡化得多,
if(d[1][1]==0)
b1.setVisible(false);
if(d[1][2]==0)
b2.setVisible(false);
if(d[1][3]==0)
b3.setVisible(false);
if(d[1][4]==0)
b4.setVisible(false);
if(d[1][5]==0)
b5.setVisible(false);
if(d[2][1]==0)
b6.setVisible(false);
if(d[2][2]==0)
b7.setVisible(false);
if(d[2][3]==0)
b8.setVisible(false);
if(d[2][4]==0)
b9.setVisible(false);
if(d[2][5]==0)
b10.setVisible(false);
if(d[3][1]==0)
b11.setVisible(false);
if(d[3][2]==0)
b12.setVisible(false);
if(d[3][3]==0)
b13.setVisible(false);
if(d[3][4]==0)
b14.setVisible(false);
if(d[3][5]==0)
b15.setVisible(false);
if(d[4][1]==0)
b16.setVisible(false);
if(d[4][2]==0)
b17.setVisible(false);
if(d[4][3]==0)
b18.setVisible(false);
if(d[4][4]==0)
b19.setVisible(false);
if(d[4][5]==0)
b20.setVisible(false);
if(d[5][1]==0)
b21.setVisible(false);
if(d[5][2]==0)
b22.setVisible(false);
if(d[5][3]==0)
b23.setVisible(false);
if(d[5][4]==0)
b24.setVisible(false);
if(d[5][5]==0)
b25.setVisible(false);
if(d[6][1]==0)
b26.setVisible(false);
if(d[6][2]==0)
b27.setVisible(false);
if(d[6][3]==0)
b28.setVisible(false);
if(d[6][4]==0)
b29.setVisible(false);
if(d[6][5]==0)
b30.setVisible(false);
}
public void wei(int w1,int w2,Button bz) //判斷並紀錄每次點擊按鈕的信息
{ //當兩次的按鈕相同才能消去
if((s.trim()).equals("no"))
{
s=b1.getLabel();
x0=w1;
y0=w2;
n1=d[x0][y0];
b=bz;
x=w1;
y=w2;
n2=d[x][y];
ba=bz;
}
else
{
x0=x;
y0=y;
n1=d[x0][y0];
b=ba;
x=w1;
y=w2;
n2=d[x][y];
ba=bz;
if(n1==n2 && ba!=b)
{
xiao();
}
}
}
public void xiao() //這里是整個游戲最重要的部分,就是判斷兩個按鈕在信息
{ //相同的情況下能不能消去。仔細分析,不一條條注釋
int i=0, j=0,n=0,k=0;
if((x0==x &&(y0==y+1||y0==y-1)) || ((x0==x+1||x0==x-1)&&(y0==y))) //相鄰的情況
{
ba.setVisible(false);
b.setVisible(false);
guli();
s="no";
d[x0][y0]=0;
d[x][y]=0;
}
else
{
for (j=0;j<7;j++ ) //兩個按鈕按行分析,看能否消去
{
if (d[x0][j]==0)
{
if (y>j)
{
for (i=y-1;i>=j;i-- )
{
if (d[x][i]!=0)
{
k=0;
break;
}
else
{
k=1;
}
}
if (k==1)
{
if (y0>j)
{
for (i=y0-1;i>=j ;i-- )
{
if (d[x0][i]!=0)
{
k=0;
break;
}
else
{
k=2;
}
}
}
if (y0<j)
{
for (i=y0+1;i<=j ;i++)
{
if (d[x0][i]!=0)
{
k=0;
break;
}
else
{
k=2;
}
}
}
}
}
if (y<j)
{
for (i=y+1;i<=j ;i++ )
{
if (d[x][i]!=0)
{
k=0;
break;
}
else
{
k=1;
}
}
if (k==1)
{
if (y0>j)
{
for (i=y0-1;i>=j ;i-- )
{
if (d[x0][i]!=0)
{
k=0;
break;
}
else
{
k=2;
}
}
}
if (y0<j)
{
for (i=y0+1;i<=j ;i++)
{
if (d[x0][i]!=0)
{
k=0;
break;
}
else
{
k=2;
}
}
}
}
}
if (y==j )
{
if (y0>j)
{
for (i=y0-1;i>=j ;i-- )
{
if (d[x0][i]!=0)
{
k=0;
break;
}
else
{
k=2;
}
}
}
if (y0<j)
{
for (i=y0+1;i<=j ;i++)
{
if (d[x0][i]!=0)
{
k=0;
break;
}
else
{
k=2;
}
}
}
}
}
if (k==2)
{ if (x0==x)
{
b.setVisible(false);
ba.setVisible(false);
guli();
s="no";
k=0;
d[x0][y0]=0;
d[x][y]=0;
}
if (x0<x)
{
for (n=x0;n<=x-1;n++ )
{
if (d[n][j]!=0)
{
k=0;
break;
}
if(d[n][j]==0 && n==x-1)
{
b.setVisible(false);
ba.setVisible(false);
guli();
s="no";
k=0;
d[x0][y0]=0;
d[x][y]=0;
}
}
}
if (x0>x)
{
for (n=x0;n>=x+1 ;n-- )
{
if (d[n][j]!=0)
{
k=0;
break;
}
if(d[n][j]==0 && n==x+1)
{
b.setVisible(false);
ba.setVisible(false);
guli();
s="no";
k=0;
d[x0][y0]=0;
d[x][y]=0;
}
}
}
}
}
for (i=0;i<8;i++ ) //按列分析,看能不能消去
{
if (d[i][y0]==0)
{
if (x>i)
{
for (j=x-1;j>=i ;j-- )
{
if (d[j][y]!=0)
{
k=0;
break;
}
else
{
k=1;
}
}
if (k==1)
{
if (x0>i)
{
for (j=x0-1;j>=i ;j-- )
{
if (d[j][y0]!=0)
{
k=0;
break;
}
else
{
k=2;
}
}
}
if (x0<i)
{
for (j=x0+1;j<=i;j++ )
{
if (d[j][y0]!=0)
{
k=0;
break;
}
else
{
k=2;
}
}
}
}
}
if (x<i)
{
for (j=x+1;j<=i;j++ )
{
if (d[j][y]!=0)
{
k=0;
break;
}
else
{
k=1;
}
}
if (k==1)
{
if (x0>i)
{
for (j=x0-1;j>=i ;j-- )
{
if (d[j][y0]!=0)
{
k=0;
break;
}
else
{
k=2;
}
}
}
if (x0<i)
{
for (j=x0+1;j<=i ;j++ )
{
if (d[j][y0]!=0)
{
k=0;
break;
}
else
{
k=2;
}
}
}
}
}
if (x==i)
{
if (x0>i)
{
for (j=x0-1;j>=i ;j-- )
{
if (d[j][y0]!=0)
{
k=0;
break;
}
else
{
k=2;
}
}
}
if (x0<i)
{
for (j=x0+1;j<=i ;j++ )
{
if (d[j][y0]!=0)
{
k=0;
break;
}
else
{
k=2;
}
}
}
}
}
if (k==2)
{
if (y0==y)
{
b.setVisible(false);
ba.setVisible(false);
guli();
s="no";
k=0;
d[x0][y0]=0;
d[x][y]=0;
}
if (y0<y)
{
for (n=y0;n<=y-1 ;n++ )
{
if (d[i][n]!=0)
{
k=0;
break;
}
if(d[i][n]==0 && n==y-1)
{
b.setVisible(false);
ba.setVisible(false);
guli();
s="no";
k=0;
d[x0][y0]=0;
d[x][y]=0;
}
}
}
if (y0>y)
{
for (n=y0;n>=y+1 ;n--)
{
if (d[i][n]!=0)
{
k=0;
break;
}
if(d[i][n]==0 && n==y+1)
{
b.setVisible(false);
ba.setVisible(false);
guli();
s="no";
k=0;
d[x0][y0]=0;
d[x][y]=0;
}
}
}
}
}
}
}
}
Ⅲ unity 做連連看游戲拐點連線應該怎麼實現
說白了就是網格連接,根據連接網格的方式橫向或者縱向來填充不同的線條紋理
Ⅳ unity 3D 求大神給一個簡單的小游戲!
連連看and so on.
Ⅳ 虛幻,寒霜3和虛幻4,unity哪個入門最低
首先,一般個人用戶是拿不到寒霜的。寒霜原本是瑞典一個小公司做的引擎,原本是要做成商業引擎的,但問題在於,EA突然收購了這家公司,然後停止對外授權。因此寒霜引擎就成了EA公司的內部引擎。除非成為EA的員工,否則是碰不到寒霜的。
剩下的unity和UE4,是商業引擎,一般開發者是可以接觸到的。至於入門嘛,要看什麼叫入門了。
是要能做一個完整的游戲,並且上架到應用商店去賺錢,叫做入門呢?還是做出一個半成品,在別人面前裝B,被視作大神,就算入門呢?這兩個概念,完全不一樣。
簡單概括一下,做出成品,Unity門檻低。因為Unity的門檻,都在前期。雖然對於計算機專業的學生來說,這點門檻不啥,但完全零基礎的小白,通常容易在一開始放棄。因為學習Unity之前,你首先要掌握C#語言以及一些.NET的基本庫,具備一定的編程基礎。如果完全零基礎,到熟練掌握C#,自學的話大概需要至少兩年的學習周期(C#,ADO.NET,ASP.NET也就是大學的四年計算機課程,具體進度看悟性),這個過程非常枯燥,每天都是在一個黑框框上打東西,完全沒有畫面可以看,每次停住回頭看看,你都會發現,自己做了一大堆筆記,思考了一大堆問題。。而啥也做不出來,只會在那個黑框框上打東西。。。。但只要度過這一段枯燥的歲月後,你幾乎就跨越了所有門檻。此後學習Unity的過程會非常平滑。只要前期的基礎打好了,學習幾周時間,做出一個CS,根本就不是事兒。從此便進入「照葫蘆畫瓢」階段了,看到一個游戲,就自己琢磨著山寨下試試,即便遇到困難,復習復習之前的筆記,總能解決大部分問題,實在想不出來,看看源碼,也就當順便復習了。等山寨出幾個游戲之後。最後就是要熟悉自己的目標平台,比如安卓,IOS兩大系統,以及任天堂,索尼等公司的開發環境,為什麼不提微軟?廢話,微軟的開發環境不就是.NET嘛?選好平台之後,簡單學習一下對應平台的注意事項。就可以准備上架第一個項目了。至此你就算正式入行了。
做出半成品UE4低。UE4這個引擎的優點之一,在於可以吸引零基礎小白。因為它可以「不寫代碼就做出遊戲」。而這個引擎的致命缺點,就是「不寫代碼根本做不出遊戲,而且那代碼還真不是一般人能寫出來的」。UE4的學習過程,一開始覺得非常非常非常容易。而且啥基礎都不需要。因為UE4裡面有一個叫做藍圖的節點編輯器。這種節點編輯器,最初是出現在三維動畫軟體裡面(如MAYA,C4D等),用來做動畫邏輯的。只要學習兩三天,拽幾個節點,連連線,立刻就讓一個人物模型跑起來了,還會跳,會開槍,會放技能。。要啥C#?要啥.NET?要啥黑框框?哥小學沒畢業,學習UE4一周,就達到這程度了。瞬間秒殺一群學了兩年編程,還在擺弄黑框框的大學生。但兩年之後,熟悉了UE4的每一個按鈕,每一個節點,會發覺自己依然只會這些。依然只會是讓一個人物模型,在各種地形上,跑一跑,跳一跳,開開槍。。。今天在沙灘上跑。。。明天在樓宇之間跳來跳去。。。。你可以認為這是一個Demo,或者說是一個半成品。但它永遠都只是半成品。因為你發現自己跟本無法「照葫蘆畫瓢」。
UE4的藍圖只適合參與三種類型的游戲工作,FPS游戲,FPS偽裝成的格鬥游戲,和賽車游戲。。。。無論藍圖學的如何精通,只要人家問你,你能用UE4的藍圖做個策略游戲嗎?你能用藍圖做個戰棋類游戲嗎?你能用藍圖做個桌面游戲嗎?你會瞬間無言以對。你一定沒見過有人用UE4做出來《連連看》吧?你也一定也沒見過UE4做出《俄羅斯方塊》吧?不是大家不屑於做這些小游戲,而是因為太難了。。不只個人開發者,即便是那些游戲行業的巨頭們,也只會在製作FPS和賽車等游戲時,才會使用UE4。。。因為其他類型,對於UE4確實太難勝任了。
因為節點編輯器,本身就是為動畫的邏輯設計的,動畫都是提前確定好的。在動畫開始製作之前,就已經有了劇本。而游戲卻完全不一樣。游戲要根據用戶的操作,臨時去做出不同的行為。直白一點說。這玩意搞出的邏輯是「固定」的。
按某某鍵,往前跑。。。。按某某鍵,開槍。。。。這種「固定」的邏輯可以。。而要靠它實現演算法級別的東西,實在太難了。
無論如何,到此算是半成品出來了,這時候擺在面前的,便是一道無比巨大的鴻溝,那就是之後的工作,要用C++去寫。C++這語言,絕對不是最難的編程語言。但絕對是最難的編程語言之一。不僅面向對象,還摻雜面向過程的那一坨東西,而且還無腦的堆砌在一起。。。這都不算啥,關鍵在於那驚人的代碼量。。。暫且不論C++本身,如果你真的能用C++寫出後面的邏輯。。後續發布都能搞定的話,那你還真的需要藍圖嗎?寫個走路,跳躍,開槍的狀態機,豈不是小兒科?
Ⅵ 求unity3d小游戲和源碼
m2h 5 個源碼 http://game.ceeger.com/forum/read.php?tid=1229 並且這個論壇裡面還有其他的源碼和資源,插件 可以看看
Ⅶ 怎麼看unity3d的引擎源碼
花錢買。跟Unity公司買。一般出自幾百上千萬,會給你的。但是你要有保密協議,不能外傳。
Ⅷ 用C++做連連看,要源代碼,能看懂的!!!
VS2005平台開發的,能夠進行聯機對戰。
7*12的排列,排列順序隨機。
代碼附帶十分形象的說明