20270人加入学习
(121人评价)
Unity初级案例 - 贪吃蛇(Unity2017.2.0)

制作于2017.12.16

价格 免费

注意:锚点设置技巧,靠哪近放在哪

 

 

1.将Start场景复制

 

2.删掉不需要的东西

 

3.控制面板保存三个Text,“无尽模式”、“得分:0”、“长度:0”

 

4.添加两个图片,添加Button控件,Home键和暂停键

[展开全文]

注意,UGUI的渲染顺序是层级面板的前后顺序,所以应该注意大面板与控制面板与文字的先后关系

 

1.为界面添加食物图片,添加Image,源图片添加食物图片,重复以上操作,添加所有食物图片

 

2.设计控制面板:

       技巧:先设计第一个,规范第一个大小,字体,样式后直接复制

                 锚点大小快捷设置可以将图片快捷填充到父对象大小

                 对多个游戏对象的同一属性赋同样的值,可以全选中在赋

 

 

     ·在控制面板下创建三个Text,分别为

------------------------

          “皮肤”:锚点四点控制面板上边中

             皮肤下创建一个toggle,改名Blue,锚点上边中,背景锚点大小全铺,对勾锚点左上角,位置左上,字体为“科技小蛇”

             在背景下创建几个Image,源文件拖入几个蛇的元素,组成一条蛇,舌头教徒转90

 

            复制粘贴Blue,创建另一条“小黄人蛇”

            设置单选框组

 

-------------------------

          “模式”:锚点四点控制面板左线中

             在模式下创建一个UI-Toggle单选框

             Label改变:Text“边界模式”,设置字体,字体颜色,为单选框的Label添加OutLine组件

              BackGround改变:改变大小,改到合适,锚点左边中,改变颜色透明度

              CheckMark摁住alt,在锚点大小快捷设置里alt摁最后一个,勾勾会填充到父对象大小

              复制边界模式,改名自由模式

              由于自由模式与边界模式的单选框是互斥的,在模式父对象下加一个组件ToggleGroup,表示两个单选框为一组

              将父对象Mode拖入 自由模式与边界模式的Toggle组件下的Group属性表示其为一组

              找到边界模式,将Toggle组件下InOn(取消激活)的钩去了

 

----------------------------------------

          “历史”:锚点四点控制面板下边中

                   在历史下设置两个子对象Text:

                   “上次:长度0,分数0”、

                   “最好,长度0,分数0”

                    锚点上边中

 

 

            (锚点快捷设置都是以父对象为基准)

 

 

 

[展开全文]
注意:如果canvas不是1280*720,在Game窗口工具栏的第二个可以改为Standalone
 
1.本课使用纯UGUI
 
2.右键UI创建Image,自动创建一个Canvas父对象与EvenSystem
 
3.将Canvas的Canvas组件的渲染模式RenderMode改为Camera
   注:Overlay渲染模式的UI层始终在最高层(3D游戏小地图)
 
4.将 摄像机 赋值给Canvas中Canvas组件的渲染摄像机RederCamera
   摄像机视角 与 Cancas视角 合成为一个
 
5.将游戏物体Image改名为bg,并将bg大小与 锚点 改为与父对象一致且对齐
   ·手动拖动大小、锚点对齐
   ·选中bg点击监视面板的RectTransform属性的stretch图标,摁住alt图标扩张后点击最后一个,则锚点与大小自动对齐
 
6.将背景图片拖动到bg监视面板的源图片sourceImage上
 
7.在canvas中创建一个Image作为另一个游戏背景图片,更改其监视面板里的sourceImage为圆角方块图,将颜色调味半透明
 
8.将该Image大小与左边对齐,锚点全对齐
 
9.Canvas右键UI创造一个Text,并改为“贪吃蛇”,点击两个居中图标,改变字体,大小为500,150,改变字体大小80,Text改名Tital
 
10.创建按钮:创建Image,改名为GO,源图片选择为小蛇,点击监视面板setNativeSize,添加Button组件
    添加OutLine组建:为图片描边
    添加shadaw:为图片描阴影,将x,y改为3,使阴影变粗
 
11.为按钮添加一个子对象Text:开始
 
12.为贪吃蛇三个字改颜色,选中在监视面板点击color,用取色器取图标粉色,添加一个shadaw组件

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[展开全文]

1.创建2D工程Snack

2.改变分辨率:

    ·File-BuildSettings窗口,点击该窗口右下角PlayerSettings

    ·监视面板中点击Resolution,将全屏勾掉,分辨率改为1280*720

    ·将DisplayResolutionDialog改为Disable(运行时直接按照默认分辨率,否则开始时会询问分辨率)

  注:没有apply按钮,就是自动保存

 

3.设置公司名,宣布主权:监视面板companyName写一个

 

4.在工程面板导入资源:右键inportPackage-CustomPackage,将资源(后缀名UnityPackage,课程网盘有)导入

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[展开全文]

玩法:WASD 空格加速

 

功能:两种蛇、比分、两种模式、平台食物加分,问号加随机分、暂停、背景颜色由

[展开全文]

创建一个空体,归零,重命名为ScriptsHolder,把StartUIController挂上,再把ControlPanel中的Last和Best挂上,打完代码后,把Home,Start与其绑定"StartUIController.StartGame",把Skin中的Blue和Yellow与“StartUIController.StartGame”绑定,选中BlueSelected和YSelected

[展开全文]

在Scripts建一个脚本,重命名MainUIController,

代码如下:

public class

[展开全文]

在Canvas里建一个Image,重命名Reward,把文件Tool中的Question拖入场景,Width:30 Height:30  加Box Collider2D,Size X:28 Y:28 将Reward拖到Prefabs.

把Reward拖到ScriptsHolder中的Reward Prefab中

[展开全文]

在Canvas上建一个Image,重命名SnakeBody,把sb0201导入,Width:40 Height:40,Pos X:0 Pos Y:0,将SnakeBody作为预制体,删掉蛇身

[展开全文]

Sh里,加Box collider 2D,Width:45 Height:45 Size X: 28  Y:28,选中Is Trigger,,加Rigidbody 2D,且不启用重力。

Food里,加Box collider 2D,Width:40 Height:40 Size X: 28  Y:28,选中Tags,输入food标签

{

public float velocity=0.35f;

public int step;

private int x;

private int y;

private Vector3 headPos;

void Start()

{

  InvokeRepeating("Move",0,velocity);

x=0;y=step;

}

void Update()

{

 if(Input.GetKeyDown(KeyCode.Space))

{

CancelInvoke();

InvokeRepeating("Move",0,velocity-0.2f);

}

 if(Input.GetKeyUp(KeyCode.Space))

{

CancelInvoke();

InvokeRepeating("Move",0,velocity);

}

if(Input.GetKey(KeyCode.W)&&y!=-step)

{ gameObject.transform.localRotation=Quaternion.Euler(0,0,0);

 x=0;y=step;

 }

if(Input.GetKey(KeyCode.S)&&y!=step)

{

gameObject.tranform.localRotation=Quaternion.Euler(0,0,180);

 x=0;y=-step;

 }

if(Input.GetKey(KeyCode.A)&&x!=step)

{

gameObject.tranform.localRotation=Quaternion.Euler(0,0,90);

 x=-step;y=0;

 }

if(Input.GetKey(KeyCode.D)&&x!=-step)

{

gameObject.tranform.localRotation=Quaternion.Euler(0,0,-90);

 x=step;y=0;

 }

 

 void Move() 

 {

headPos=gameObject.transform.localPosition

gameObject.transform.localPosition=new Vector3(headPos.x+x,headPos.y+y)

}

private void OnTriggerEnter2D(Collider2D collision)

{

  if(collision.gameObject.CompareTag("Food"))

  {

  Destroy(collision.gameObject);

  FoodMaker.Instance.MakeFood();

}

}

[展开全文]

在ControPanel下建Image,Width:40,Height:40,再写脚本FoodMaker

{

 public int xlimit=21;

public int ylimit=11;

public int xoffset=7;

public GameObject foodPrefab;

public Sprite[] foodSprites;

private Transform foodHolder;

void Start()

{

foodHolder=GameObject.Find("FoodHolder").transform;

MakeFood();

}

 

void MakeFood()

{

 int index=Random.Range(0,foodSprites.Length);

GameObject food=Instantiate(foodPrefab);

food.GetComponent<Image>().sprite=foodSprites[index];

food.transform.SetParent(foodHolder,false);

int x=Random.Range(-xlimit+xoffset,xlimit);

int y=Random.Range(-ylimit,ylimit);

food.transform.localPosition=new Vector3(x*30,y*30,0);

 

}

}

创建一个GameObject,重命名ScriptsHolder,将Food Maker放里,把Icon文件里的Food放入 Food Sprites。

[展开全文]

 

 {

public float velocity=0.35f;

public int step;

private int x;

private int y;

private Vector3 headPos;

void Start()

{

  InvokeRepeating("Move",0,velocity);

x=0;y=step;

}

void Update()

{

 if(Input.GetKeyDown(KeyCode.Space))

{

CancelInvoke();

InvokeRepeating("Move",0,velocity-0.2f);

}

 if(Input.GetKeyUp(KeyCode.Space))

{

CancelInvoke();

InvokeRepeating("Move",0,velocity);

}

if(Input.GetKey(KeyCode.W)&&y!=-step)

{ gameObject.transform.localRotation=Quaternion.Euler(0,0,0);

 x=0;y=step;

 }

if(Input.GetKey(KeyCode.S)&&y!=step)

{

gameObject.tranform.localRotation=Quaternion.Euler(0,0,180);

 x=0;y=-step;

 }

if(Input.GetKey(KeyCode.A)&&x!=step)

{

gameObject.tranform.localRotation=Quaternion.Euler(0,0,90);

 x=-step;y=0;

 }

if(Input.GetKey(KeyCode.D)&&x!=-step)

{

gameObject.tranform.localRotation=Quaternion.Euler(0,0,-90);

 x=step;y=0;

 }

 

 void Move() 

 {

headPos=gameObject.transform.localPosition;

gameObject.transform.localPosition=new Vector3(headPos.x+x,headPos.y+y)

}

}

[展开全文]

在Canvas里建Image,重命名为Sh,把sh02拖入场景,    Pos X:0,Pos Y:0 Width:45 Height:45,新建Prefabs,将Sh拖入该文件,点击Apply。新建Scripts文件,在该文件下建SnaKeHead,双击打开,敲代码:

 {

public float velocity=0.35f;

public int step;

private int x;

private int y;

private Vector3 headPos;

void Start()

{

  InvokeRepeating("Move",0,velocity);

x=step;y=0;

}

void Update()

{

if(Input.GetKey(KeyCode.W))

{

 x=0;y=step;

 }

if(Input.GetKey(KeyCode.S))

{

 x=0;y=-step;

 }

if(Input.GetKey(KeyCode.A))

{

 x=-step;y=0;

 }

if(Input.GetKey(KeyCode.D))

{

 x=step;y=0;

 }

 

 void Move() 

 {

headPos=gameObject.transform.localPosition;

gameObject.transform.localPosition=new Vector3(headPos.x+x,headPos.y+y)

}

}

保存代码,然后将代码挂上,点击Apply,调整Step:30。

[展开全文]

Bg下建GameObject,重命名UP作为一个碰撞器,锚点Pos X:105,Pos Y:10,Width:1070,Height:30;加Box Collider 2D,Size X:-105,Y:0

复制粘贴UP,重命名Down,锚点Pos X:105,Pos Y:-10,Width:1070,Height:30;

复制粘贴Down,重命名Right,锚点Pos X:30,Pos Y:0,Width:70,Height:720;Size X:10,Y:720

复制粘贴Right,重命名Left,锚点Pos X:210,Pos Y:0,Width:10,Height:720;Size X:10,Y:720,Offset X:-20

给所有的主键挂上Image,导入BackGround,color:红色,

[展开全文]

将Scenes文件中的Start复制粘贴,重命名Main,双击Main,除了Msg,Mode和Bg保留,其余的东西删掉,把Mode改名为Score,调整Pos X:150  Pos Y:150 Height:100,输入“得分:0”,Font Size:40;然后复制粘贴Score重命名Length,调整Pos X:150  Pos Y:-60 Height:100,输入“长度:0”,Font Size:40。

ControlPanel中新建Image,重命名Home把UI中的Home拖入场景,导入UISprite,Width:80 Height:80,透明度为128,加Button,在Home下建Image,重命名Home,把UI文件里的Home拖入场景,Width:70 Height:70,Pos X:55 Pos Y:I10,mageType改为Sliced.

把Home复制粘贴,重命名为Pause,Pos X:-55Pos Y:110 。

把Home复制粘贴,重命名为Pause,Pos X:-55Pos Y:110 。

把Home复制粘贴,重命名为Pause,Pos X:-55Pos Y:110 。

 

[展开全文]

在Bg里建一个Image,把Food文件中的icecream-01拖入Source Image ,调整宽、高均为80,透明度为175,重命名为Food1,重复上述把icecream-02到icecream-10的元素调整到画板各个位置

ControPanel建一个Text,输入皮肤,Font Style:Bold aND Italic Font Size:35 Width 200 Height:50 PosX:0 Pos Y-50,重命名Skin

ControPanel建一个Text,输入模式,Font Style:Bold aND Italic Font Size:35 Width 200 Height:50 PosX:150 Pos Y-50,重命名Mode

ControPanel建一个Text,输入分数,Font Style:Bold aND Italic Font Size:35 Width 200 Height:50 PosX:0 Pos Y165,重命名Score,在Score中建Text,输入“上次:长度0,分数:0”Width:250 Height:50 PosX:0 Pos Y-75,重命名为Last。复制粘贴Last,改名为Best,输入“最好:长度0,分数:0”Width:250 Height:50 PosX:0 Pos Y-125。

Mode中建Toggle,Width:200 Height:50 Left :55输入“边界模式”调为居中,Font Size:30 color:#FF5858FF,加Outline,Background调整Width:35 Height: 35 Pos X:30  Pos Y:0 color:#F89D9DC8 透明度:200,将BackGround重命名Border,复制粘贴重命名为NoBorder,将Border选中调节锚点位置Pos X:0 Pos Y:-85,NoBorder选中调节锚点位置Pos X:0 Pos Y:-150,输入“自由模式”,其BackGround的color:#97C599C8。

Mode里,挂主键Toggle Group,选中NoBorder,勾掉Is On,把Mode拖入Group。

在Skin中建Toggle,Width 280 Height:100 PosX:0 Pos Y-115,重命名:Blue,调节BackGround的锚点,颜色改为蓝色,Checkmark调整Right 50 Height:50 PosX:50 Pos Y-25 Label调整Right:0 Height:50 PosX:0 Pos Y-25,输入“科技小蛇”,Font Size:25.在BackGrond中建Image,将文件SnakePart中的sh01拖到Source Image,Rotion Z:90,Pos X:-100 PosY:-20,将Image复制粘贴,,Pos X:-65PosY:-20,再复制粘贴,Pos X:-30PosY:-20,再复制粘贴,Pos X:40PosY:-20,再复制粘贴,Pos X:75PosY:-20。把Blue复制粘贴,重命名为Yellow,重复上述步骤,输入“小黄人蛇”,拖入sh02,勾掉Is On。Skin上加Toggle Group,最后将Blue 和Yellow的Group设定。

 

[展开全文]

将bg拖入Scene,创建Canvas,将Render Mode选为Screen Spare-Camera,然后把摄像机拖到Render Camera,将image重命名Bg,Anchor Presets按住ALT键让Bg与Canvas一样大小且锚点对齐 ,将Background中的bg拖到Source Image。

在Canvas中创建一个Image,作为面板的背景图,选择ugi自带的Background,将颜色透明调位128,Anchor Presets按住ALT选择左对齐,调整宽度 :300,重命名ControlPanel

在Canvas中创建一个Text,写下贪  吃  蛇,Anchor Presets按住ALT选择上对齐Makefont_yueyuan,字体宽度:500 高度:150 Pos X:95  Pos y-80 Font Size:80 Font Style:Bold,将Text重命名Title

在Canvas中创建一个Image,改名为Go,选择文件Select Sprite中的Go,点击Set Native Size,宽:300 高度:300,与标题保持竖直,加button主键,为了凸显按钮,再加一个Outline和Shadow,将Outline中的Effect Distance X改为2 Y改为-2,将Shadow中的Effect Distance X改为3 Y改为-3,添加Text,输入开始,Font Size:75,宽:300 高:300。点击Title,color取色器颜色更改为 #FF5858FF,加Shadow,Effect Distance X改为3 Y改为-3

[展开全文]

取消Default Is Full Screen*,将DisplayResolution Dialog改为Disabled,这样可以默认分辨率

导入事先下好的资源

选中Sprites中的BgPart.png用PS软件打开,在PS中点击编辑,定义图案,确定。然后点击新建,高度1080,宽度1920,分辨率72,点击编辑中的填充,自定义图案BgPart.png,点击确定。最后保存为

 

[展开全文]