Restaurant & Cooking Starter Kit v1.2.1
项目:
using UnityEngine; using System.Collections; namespace VoidGame { public class Constant : MonoBehaviour { public static string m_plateTag = "Plate"; //碟标签 public static string m_ingredientTag = "Ingredient"; //原材料标签 public static string m_trashBinTag = "TrashBin"; //垃圾桶标签 public static string m_customerTag = "Customer"; //客户标签 public static string m_dragTag = "Drag"; //拖动的标签 public static string m_dragSortingLayer = "Drag"; //拖动的排序层 public static string m_uiSortingLayer = "UI"; //UI的排序层 ; //在盘子中的原材料上限 } }
Constant
using UnityEngine; using System.Collections; namespace VoidGame { public class Customer : MonoBehaviour { public Product m_product; //客户需要的产品 public AudioClip m_deliverySuccessAudioClip; //交付成功音乐 public AudioClip m_deliveryFailedAudioClip; //交付失败音乐 private GameManager m_gameManager; private SpriteRenderer m_customerSpriteRenderer; //客户精灵渲染器 private SpriteRenderer m_productSpriteRenderer; //产品精灵渲染器 private SpriteRenderer[] m_ingredientSpriteRenderers; //原料精灵渲染器 private AudioSource m_audioSource; //音乐 void Start() { m_gameManager = GameManager.m_instance; m_audioSource = GetComponent<AudioSource>(); InitProduct(); LoadProductAndIngredientsImage(); } //初始化产品 void InitProduct() { m_product = new Product(); m_product.m_productID = Random.Range(,); m_product.m_productPrice = Random.Range(,); ,); m_product.m_totalIngredients = new int[ingredientCount]; ;i < ingredientCount;i++) { m_product.m_totalIngredients[i] = Random.Range(,); } } //加载产品和原料图片 void LoadProductAndIngredientsImage() { m_ingredientSpriteRenderers = new SpriteRenderer[m_product.m_totalIngredients.Length]; SpriteRenderer[] spriteRenderers = transform.GetComponentsInChildren<SpriteRenderer>(); m_customerSpriteRenderer = spriteRenderers[]; m_productSpriteRenderer = spriteRenderers[]; m_productSpriteRenderer.sprite = m_gameManager.m_productSprites[m_product.m_productID - ]; ;i < m_product.m_totalIngredients.Length;i++) { m_ingredientSpriteRenderers[i] = spriteRenderers[i + ]; } ;i < spriteRenderers.Length;i++) { spriteRenderers[i].sprite = null; } ;i < m_ingredientSpriteRenderers.Length;i++) { m_ingredientSpriteRenderers[i].sprite = m_gameManager.m_ingredientSprites[m_product.m_totalIngredients[i]]; m_ingredientSpriteRenderers[i].transform.localScale = ); } } void OnTriggerEnter2D(Collider2D other) { //盘子移动到客户上 if(other.CompareTag(Constant.m_plateTag)) { m_gameManager.m_dragPlateArrivedCustomer = true; Color newColor = m_customerSpriteRenderer.material.color; newColor.a = 0.5f; m_customerSpriteRenderer.material.color = newColor; } } void OnTriggerExit2D(Collider2D other) { //盘子离开客户 if(other.CompareTag(Constant.m_plateTag) && m_gameManager.m_dragPlateArrivedCustomer) { m_gameManager.m_dragPlateArrivedCustomer = false; Color newColor = m_customerSpriteRenderer.material.color; newColor.a = 1f; m_customerSpriteRenderer.material.color = newColor; } } //客户检查原料是否正确 public void CheckPlate() { //获取盘子里的原料列表 Ingredient[] ingredients = FindObjectOfType<Plate>().GetComponentsInChildren<Ingredient>(); bool isMatch = true; if(ingredients.Length == m_product.m_totalIngredients.Length) { ;i < ingredients.Length;i++) { ;j < m_product.m_totalIngredients.Length;j++) { if(ingredients[i].m_ingredientID == m_product.m_totalIngredients[j]) { Debug.Log(); break; } ) { isMatch = false; } } if(!isMatch) { break; } } } else { isMatch = false; } if(isMatch) { if(!m_audioSource.isPlaying) { m_audioSource.clip = m_deliverySuccessAudioClip; m_audioSource.Play(); } } else { if(!m_audioSource.isPlaying) { m_audioSource.clip = m_deliveryFailedAudioClip; m_audioSource.Play(); } } InitProduct(); LoadProductAndIngredientsImage(); ;i >= ;i--) { Destroy(m_gameManager.m_ingredientsInPlate[i]); m_gameManager.m_ingredientsInPlate.RemoveAt(i); } } } }
Customer
using UnityEngine; using System.Collections; using System.Collections.Generic; namespace VoidGame { public class GameManager : MonoBehaviour { public static GameManager m_instance; //单例 public GameObject m_ingredientBackgroundPrefab; //原料背景预设 public List<GameObject> m_ingredients; //原料预设列表 public List<Sprite> m_productSprites; //产品精灵列表 public List<Sprite> m_ingredientSprites; //原料精灵列表 [HideInInspector] public GameObject m_dragIngredient; //拖动中的原材料 [HideInInspector] public bool m_dragIngredientArrived = false; //原材料是否到达碟内 [HideInInspector] public bool m_dragPlateArrivedTrashBin = false; //盘子是否到达垃圾桶 [HideInInspector] public bool m_dragPlateArrivedCustomer = false; //盘子是否到达客户 [HideInInspector] public List<GameObject> m_ingredientsInPlate = new List<GameObject>(); //在盘子中的原材料 private void Awake() { m_instance = this; } private void Start() { GenerateIngredientBackground(); } //生成原料背景和原料 private void GenerateIngredientBackground() { Transform ingredientParentTransform = transform.Find("/Ingredients"); Transform ingredientBackgroundParentTransform = transform.Find("/Background/IngredientsBackground"); Vector3 newPosition = ingredientBackgroundParentTransform.position; newPosition.y = ingredientBackgroundParentTransform.position.y + ; ;i < ;i++) { newPosition.x = ingredientBackgroundParentTransform.position.x - ; newPosition.y--; ;j < ;j++) { newPosition.x++; GameObject ingredientBackground = GameObject.Instantiate(m_ingredientBackgroundPrefab,newPosition,Quaternion.identity,ingredientBackgroundParentTransform) as GameObject; GameObject.Instantiate(m_ingredients[i * + j],newPosition,Quaternion.identity,ingredientParentTransform); } } } } }
GameManager
using UnityEngine; using System.Collections; namespace VoidGame { public class Ingredient : MonoBehaviour { public int m_ingredientID; //原料ID private AudioSource m_audioSource; private GameManager m_gameManager; private void Start() { m_gameManager = GameManager.m_instance; m_audioSource = GetComponent<AudioSource>(); } protected void Update() { if(m_gameManager.m_dragIngredient != null) { FollowCursor(); } } //点击原材料,创建一个相同的可拖动的原材料 private void OnMouseDown() { if(m_gameManager.m_ingredientsInPlate.Count < Constant.m_maxIngredientsInPlate) { CreateDragIngredient(); } } //抬起鼠标时原料在盘子里,将原料设置为盘子的子对象. //抬起鼠标时原料不在盘子里,删除这个原料 private void OnMouseUp() { if(m_gameManager.m_dragIngredient != null && m_gameManager.m_dragIngredientArrived) { GameObject plate = GameObject.FindGameObjectWithTag(Constant.m_plateTag); m_gameManager.m_dragIngredient.transform.SetParent(plate.transform); m_gameManager.m_dragIngredient.transform.position = plate.transform.position; m_gameManager.m_dragIngredient.GetComponent<BoxCollider2D>().enabled = false; m_gameManager.m_dragIngredient.transform.localScale = ); m_gameManager.m_ingredientsInPlate.Add(m_gameManager.m_dragIngredient); m_gameManager.m_dragIngredient = null; m_gameManager.m_dragIngredientArrived = false; } else { Destroy(m_gameManager.m_dragIngredient); m_gameManager.m_dragIngredient = null; } } //创建可拖动的原材料 private void CreateDragIngredient() { Vector3 newPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); newPosition.z = ; m_gameManager.m_dragIngredient = Instantiate(gameObject,newPosition,Quaternion.identity) as GameObject; m_gameManager.m_dragIngredient.GetComponent<SpriteRenderer>().sortingLayerName = Constant.m_dragSortingLayer; //m_gameManager.m_dragIngredient.GetComponent<SpriteRenderer>().tag = Constant.m_dragTag; if(!m_audioSource.isPlaying) { m_audioSource.Play(); } } //原材料跟随鼠标 private void FollowCursor() { Vector3 newPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); newPosition.z = ; m_gameManager.m_dragIngredient.transform.position = newPosition; } } }
Ingredient
using UnityEngine; using System.Collections; namespace VoidGame { public class Plate : MonoBehaviour { private Vector3 m_originPosition; //原始位置 private GameManager m_gameManager; private SpriteRenderer m_spriteRenderer; private void Start() { m_gameManager = GameManager.m_instance; m_spriteRenderer = GetComponent<SpriteRenderer>(); m_originPosition = transform.position; } private void OnTriggerEnter2D(Collider2D other) { //原料移动到盘子上 if(other.CompareTag(Constant.m_ingredientTag)) { m_gameManager.m_dragIngredientArrived = true; //盘子移动到垃圾桶上 } else if(other.CompareTag(Constant.m_trashBinTag)) { Color newColor = m_spriteRenderer.material.color; newColor.a = 0.5f; m_spriteRenderer.material.color = newColor; //盘子移动到客户身上 } else if(other.CompareTag(Constant.m_customerTag)) { Color newColor = m_spriteRenderer.material.color; newColor.a = 0.5f; m_spriteRenderer.material.color = newColor; } } private void OnTriggerExit2D(Collider2D other) { //原料离开盘子 if(other.CompareTag(Constant.m_ingredientTag) && m_gameManager.m_dragIngredientArrived) { m_gameManager.m_dragIngredientArrived = false; //盘子离开垃圾桶 } else if(other.CompareTag(Constant.m_trashBinTag)) { Color newColor = m_spriteRenderer.material.color; newColor.a = 1f; m_spriteRenderer.material.color = newColor; //盘子离开客户 } else if(other.CompareTag(Constant.m_customerTag)) { Color newColor = m_spriteRenderer.material.color; newColor.a = 1f; m_spriteRenderer.material.color = newColor; } } //如果盘子里有原料,修改排序层. private void OnMouseDown() { ) { m_spriteRenderer.sortingLayerName = Constant.m_dragSortingLayer; } } //如果盘子里有原料,可以拖动.如果盘子里没材料,不可以拖动 private void OnMouseDrag() { ) { Vector3 newPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); newPosition.z = ; transform.position = newPosition; } } //如果盘子在垃圾桶里,删除盘子里的原料 private void OnMouseUp() { if(m_gameManager.m_dragPlateArrivedTrashBin) { TrashBin trashBin = FindObjectOfType<TrashBin>(); trashBin.ClearIngredientInPlate(); } else if(m_gameManager.m_dragPlateArrivedCustomer) { Customer customer = FindObjectOfType<Customer>(); customer.CheckPlate(); } transform.position = m_originPosition; m_spriteRenderer.sortingLayerName = Constant.m_uiSortingLayer; } } }
Plate
using UnityEngine; using System.Collections; namespace VoidGame { [System.Serializable] public class Product { public int m_productID; //产品ID public int m_productPrice; //产品价格 public int[] m_totalIngredients; //产品需要的原料ID } }
Product
using UnityEngine; using System.Collections; namespace VoidGame { public class TrashBin : MonoBehaviour { private GameManager m_gameManager; private GameObject m_plate; //盘子 private AudioSource m_audioSource; private SpriteRenderer m_spriteRenderer; private void Start() { m_gameManager = GameManager.m_instance; m_audioSource = GetComponent<AudioSource>(); m_spriteRenderer = GetComponent<SpriteRenderer>(); m_plate = GameObject.FindGameObjectWithTag(Constant.m_plateTag); } //盘子移动到垃圾桶上 private void OnTriggerEnter2D(Collider2D other) { if(other.CompareTag(Constant.m_plateTag)) { m_gameManager.m_dragPlateArrivedTrashBin = true; Color newColor = m_spriteRenderer.material.color; newColor.a = 0.5f; m_spriteRenderer.material.color = newColor; } } //盘子离开垃圾桶 private void OnTriggerExit2D(Collider2D other) { if(other.CompareTag(Constant.m_plateTag) && m_gameManager.m_dragPlateArrivedTrashBin) { m_gameManager.m_dragPlateArrivedTrashBin = false; Color newColor = m_spriteRenderer.material.color; newColor.a = 1f; m_spriteRenderer.material.color = newColor; } } //清除盘子里的原材料 public void ClearIngredientInPlate() { ;i >= ;i--) { Destroy(m_gameManager.m_ingredientsInPlate[i]); m_gameManager.m_ingredientsInPlate.RemoveAt(i); } if(!m_audioSource.isPlaying) { m_audioSource.Play(); } } } }
TrashBin
Restaurant & Cooking Starter Kit v1.2.1的更多相关文章
- Restaurant & Cooking Starter Kit v1.2.1 学习
项目: using UnityEngine; using System.Collections; namespace VoidGame { public class Constant : MonoBe ...
- Microsoft IoT Starter Kit 开发初体验
1. 引子 今年6月底,在上海举办的中国国际物联网大会上,微软中国面向中国物联网社区推出了Microsoft IoT Starter Kit ,并且免费开放1000套的申请.申请地址为:http:// ...
- asp.net的3个经典范例(ASP.NET Starter Kit ,Duwamish,NET Pet Shop)学习资料
asp.net的3个经典范例(ASP.NET Starter Kit ,Duwamish,NET Pet Shop)学习资料 NET Pet Shop .NET Pet Shop是一个电子商务的实例, ...
- Microsoft IoT Starter Kit 开发初体验-反馈控制与数据存储
在上一篇文章<Microsoft IoT Starter Kit 开发初体验>中,讲述了微软中国发布的Microsoft IoT Starter Kit所包含的硬件介绍.开发环境搭建.硬件 ...
- React Starter Kit 中文文档
最近没事又翻译了个玩意. Github上的一个Star 非常高的 React 样板程序. 由Node.js,Express,GraphQL和React构建,可选加入Redux等,并可以包含Webpac ...
- Window 64bit环境搭建Web Starter Kit
最近在学习https://developers.google.com/web/fundamentals/这里的内容,其中就有一部分是安装Web Starter Kit的教程,我总结一下自己的安装过程. ...
- Unity Game Starter Kit for Windows Store and Windows Phone Store games
原地址:http://digitalerr0r.wordpress.com/2013/09/30/unity-game-starter-kit-for-windows-store-and-window ...
- Microsoft IoT Starter Kit
Microsoft IoT Starter Kit 开发初体验 1. 引子 今年6月底,在上海举办的中国国际物联网大会上,微软中国面向中国物联网社区推出了Microsoft IoT Starter K ...
- 介绍使用Cordova和Web Starter Kit开发Android
介绍 如今,每个人都想制作移动应用程序,为什么不呢?世界上有更多的移动设备比任何其他用户设备.Android尤其流行,但是为什么不从一个众所周知的跨平台应用的基础开始呢?Android的开发显然比其他 ...
随机推荐
- Android中ListView下拉刷新的实现
ListView中的下拉刷新是非常常见的,也是经常使用的,看到有很多同学想要,那我就整理一下,供大家参考.那我就不解释,直接上代码了. 这里需要自己重写一下ListView,重写代码如下: packa ...
- How to install Savanna
Pre-conditions: openstack has been installed successfully. 解压软件包中的savanna-all.tar.gz安装tar -C / -xzf ...
- 中文格式python 打印json格式的数据中文显示问题
废话就不多说了,开始... 平日会有这么一个应用场景,会用python去处置json格式的web API,以“ip.taobao.com”的API为例,详情见http://ip.taobao.com/ ...
- Java 在本地文件中查找固定字符串
适用范围:只适用于在文本文档中查找(如,txt.java.c等等,并不适用与doc.xls等等这些文件),可嵌套文件夹.但是对中文不支持. 例如:文件夹:F:/demo 子文件夹:F:/demo/er ...
- Hibernate 二级缓存配置出现的异常
1.java.lang.ExceptionInInitializerError at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Na ...
- Girl Develop It Chapter Leaders at 2015 Annual Leadership Summit
Girl Develop It Chapter Leaders at 2015 Annual Leadership Summit Corinne Warnshuis, Executive Direct ...
- CAD打开缓慢问题解决方法
打开AutoCAD很卡,大概需要1分钟 打开Internet Explorer,点击工具菜单,打开"Internet选项",去勾选"检查发行商的证书是否吊销", ...
- 用websocket实现后台推送消息
1前台实现 connect:function() { var webSocketIP = window.CRM_CONFIG.WebSocketIP; var target = 'ws://'+web ...
- ArrayList、HashSet、HashTable、List、Dictionary的区别
在C#中,数组由于是固定长度的,所以常常不能满足我们开发的需求. 由于这种限制不方便,所以出现了ArrayList. ArrayList.List<T> ArrayList是可变长数组,你 ...
- gimagex 2.0.17 汉化版
软件名称: gimagex 2.0.17 汉化版 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win 32位/64位 软件大小: 1.31MB 图片预览: 软件简介: gimagex 2. ...