之前做大作业的时候做了一个小卖部的场景,里面有一些想法还是想记录一下。

结果

左下角显示余额,每选择一个物品时钱会减少,并且这个物品会移到左边的购物袋内,若钱不够则会进行提示。怎样能够让玩家在选择一个物品后钱会变少,这个问题想了好久才解决,我可能智商不太够吧…

步骤

  1. 布置好场景,其中商店+物品是此场景的背景,另外还需要每一个物品的png图片,布置在背景中该物品位置上,如图:
  2. 新建一个空物体,命名为Goods,将所有商品列为Goods的子物体:
  3. 新建脚本GoodsController,用于控制每个商品的移动、余额减少等,先来控制商品移动——先把商品的透明度都设为0,当某商品被点击时,克隆该商品用于下一次点击,透明度变为1,然后移动到购物袋处,透明度再变为0.7,同时移动过程中商品变小(移动过程中透明度和大小的变化都可以不要,这些是为了游戏体验更好做的):
private Vector3 start;//初始位置
private Vector3 cur;//当前位置
private Vector3 end;//末位置
private bool canMove;//判断物品是否可以移动
private float speed;
private GameObject cloneGameObject;//克隆得到的物体public float endRangeXMin, endRangeXMax, endRangeYMin, endRangeYMax;//在 某范围内 随机末位置
public float x;//物体移动时大小变化的倍数void Awake()
{GetComponent<Renderer>().material.color = new Color(1.0f, 1.0f, 1.0f, 0.0f);//初始时物体透明start = transform.position;//获取初始位置cur = start;end = new Vector3(Random.Range(endRangeXMin,endRangeXMax),Random.Range(endRangeYMin,endRangeYMax),start.z);//取得末位置canMove = false;//物品不可以移动speed = 14.0f;
}// Update is called once per frame
void Update()
{if (canMove){GetComponent<Renderer>().material.color = new Color(1.0f, 1.0f, 1.0f, 1.0f);transform.position = Vector3.MoveTowards(cur, end, speed * Time.deltaTime);transform.localScale *= x;//一边移动一边变小}cur = transform.position;if(transform.position==end)//物体移到购物袋后{GetComponent<Renderer>().material.color = new Color(1.0f, 1.0f, 1.0f, 0.7f);//透明度改变canMove = false;//物体不再能移动,大小也不再改变}
}public void OnMouseDown()
{cloneGameObject = GameObject.Instantiate<GameObject>(gameObject);//克隆物体canMove = true;//点击后物体可以移动
}
  1. 然后控制剩下的钱数——在场景中添加Text,命名为Balance,再给Goods添加脚本Balance,用于一开始时随机生成钱数:
using System.Collections;
using System.Collections.Generic;
using UnityEngine.EventSystems;
using UnityEngine;
using UnityEngine.UI;public class Balance : MonoBehaviour
{public Text balanceText;public float balance;//余额// Start is called before the first frame updatevoid Start(){balance = (float)Random.Range(1, 99) + Random.Range(0.1f, 0.9f);balanceText.text = "我还剩" + "\r\n" + string.Format("{0:f1}",balance) + "元";}
}

保存后把Text Balance添加给balanceText;

  1. 打开GoodsController脚本,添加代码和条件来连接剩下的钱数:
private float[] price = { 0.5f, 50.0f, 2.0f, 2.0f, 4.0f, 5.0f, 10.0f, 1.0f, 70.0f, 1.5f, 0.5f, 0.5f};public int number;
public Balance balance;
public Text balanceText;public void OnMouseDown()
{if (balance.balance < price[number])//钱不够后不可以移动(购买){canMove = false;balanceText.text = "钱不够了";}else{cloneGameObject = GameObject.Instantiate<GameObject>(gameObject);//克隆物体canMove = true;//点击后物体可以移动balance.balance -= price[number];balanceText.text = "我还剩" + "\r\n" + string.Format("{0:f1}", balance.balance) + "元";}
}
  1. 把GoodsController添加给所有商品,并为相应属性赋值(以第一个辣条为例):
  2. 左下角按钮用于退回其他场景。
  3. 效果:
    初始时——

    买了几件物品后——

    此时再去点击70元的耳机——

【Unity】制作一个商店场景相关推荐

  1. RayFire for Unity制作一个可以被击碎的岩石

    RayFire for Unity制作一个可以被击碎的岩石 1.导入名字为Rock_05的Prefab 2.添加脚本 Rayfire Shatter,选择一个type,然点击Fragment,这时可以 ...

  2. 【游戏开发创新】手把手教你使用Unity制作一个高仿酷狗音乐播放器,滨崎步,旋律起,爷青回(声音可视化 | 频谱 | Audio)

    文章目录 一.前言 二.获取UI素材 三.使用UGUI制作界面 1.界面布局 2.账号圆形头像 3.搜索框 4.调节UI层 5.黑色按钮悬浮高亮效果 6.纯文字按钮 7.滚动列表自适应 8.歌名与视频 ...

  3. 用Unity制作一个很火的找不同游戏,包括核心玩法与关卡编辑器工具的实现

    玩家们心里都清楚,其实游戏的品类超级多,有些人喜欢玩moba.射击竞技类的,有些人喜欢塔防.策略.回合制类的,而又有些人喜欢经营养成.休闲益智类的.休闲益智类游戏,虽没像moba类游戏的激烈操作带来的 ...

  4. Unity制作一个望远镜与查看器摄像机

    Unity 游戏开发技巧集锦之制作一个望远镜与查看器摄像机 Unity中制作一个望远镜 本节制作的望远镜,在鼠标左键按下时,看到的视图会变大:当不再按下的时候,会慢慢缩小成原来的视图.游戏中时常出现的 ...

  5. 使用Unity制作一个简单的聊天室

    使用控制台作为一个服务器,在Unity中开发客户端,制作一个简易的聊天室,无论哪个客户端发送消息,其他的客户端都会实时的显示出来. 服务器代码 using System; using System.C ...

  6. unity制作一个可以自由滑动收缩的历史记录功能。

    公司在做一款模拟经营类的卖车游戏,需要一个简单的历史记录功能,放在左上角,记录最近20条的收入/支出记录.超过2秒不动则收起.收起时展示最近的一个消息记录. 用到的组件是ScrollView,使用方法 ...

  7. 手把手教你使用Unity制作一个飞机喷射火焰尾气的粒子效果

    文章目录 零.最终效果 一.飞机模型 二.飞机喷射火焰尾气制作 1.贴图 2.材质球 3.创建粒子 3.设置粒子的Renderer,将材质球赋值给粒子 4.设置粒子的Shape,调整喷射区域和角度 5 ...

  8. 如何用unity制作一个桌面宠物?

    unity版本为:2018.3.14 1.找到带动画模型 获取途径: ① unity官方有免费模型和付费模型. ② 有mmd转unity的转换器. 我使用的是"Little Heroes M ...

  9. 用unity制作一个智能机器人程序

    使用Unity来制作智能机器人程序可以不仅仅局限于2D游戏,也可以构建3D游戏.虚拟现实和模拟环境.Unity提供了一组强大的工具,帮助你构建虚拟机器人,从而实现复杂的AI及机器人行为.它还可以提供可 ...

  10. unity 制作的app发布到andriod手机

    一,unity 制作一个简单的动画. 1.场景中添加一个立方体. 2.立方体上面添加一个胶囊形状,胶囊形状添加重力属性,运行的时候往下落. 3.制作完成,保存工程,名字为"t1". ...

最新文章

  1. 从起源到具体算法,这篇深度学习综述论文送给你
  2. mysql创建表的时候显式申明字符集
  3. Oracle Discover产品简介
  4. python flask框架剖析_python flask框架实现传数据到js的方法分析
  5. 告别 ROR windows 部署的噩梦-在 windows 上面 使用 Apache 部署 Ruby On Rails
  6. 【秒懂设计模式】单例设计模式
  7. 【转】无需刻录DMG光盘,教你在VMWare下安装MAC OS X Snow Leopard 10.6
  8. 根据viewport的size自动调整fontsize大小
  9. 分享一个强大的弹出框
  10. 操作系统-UNIX三级索引技术
  11. STL源码剖析之迭代器
  12. 思源黑体官方下载地址
  13. GreenSock GSAP 3.0 最新版 所有内容创建于2020年4月4日
  14. Python写excel练习
  15. 《数论概论》读书笔记 第三章勾股数组与单位圆
  16. 默默学Sharding-Sphere(二)
  17. GitHub 上 22 万star的第一抢票神器,3秒钟抢到!
  18. 【小学信息技术教资面试】《蜻蜓立小荷》教案
  19. Multisim应用举例实验
  20. JS——unload事件

热门文章

  1. 夏天摆地摊,卖什么产品赚钱比较快呢?
  2. 如何为长期旅行做准备
  3. WPS中如何删除中文保留英文
  4. 错误排查:Cloudera Manager Agent 的 Parcel 目录位于可用空间小于 10.0 吉字节 的文件系统上。 /opt/cloudera/parcels...
  5. 1.关于433MHz按键单片机解码
  6. mandriva2010 xp ubuntu10.04 三系统的安装
  7. 腾讯云云服务器的功能与优势-Unirech腾讯云代充
  8. 乳清白蛋白纳米粒修饰生物素
  9. 吃PHP小孩智力好,毁掉孩子智商的4类食物  别再给孩子吃了!
  10. android 打开pdf文件