¡¡¡Ú£±£²¡Û¤Î¼ê½ç¤Ç¥É¥é¥Ã¥°¡Ê¥¹¥ï¥¤¥×¡Ë¤Ë¤è¤Ã¤Æ´³»Ù¤ò¤Ä¤Ê¤²¤Æºï½ü¥ê¥¹¥È¤ØÄɲ乤ë½èÍý¤¬¼ÂÁõ¤µ¤ì¤Þ¤·¤¿¡£
¡¡¤³¤Î¼ê½ç¤Ç¤Ï¥É¥é¥Ã¥°¤¬½ªÎ»¡Ê²èÌ̤«¤é»Ø¤òÎ¥¤¹/¥Þ¥¦¥¹¤Îº¸¥É¥é¥Ã¥°¤ò¤ä¤á¤ë¡Ë¤·¤¿ºÝ¤Ë¡¢ºï½ü¥ê¥¹¥È¤Ë¤¢¤ë´³»Ù¤Î¿ô¤Ë¹ç¤ï¤»¤Æ½èÍý¤ò¹Ô¤¤¤Þ¤¹¡£
¥É¥é¥Ã¥°½ªÎ»¤ÎȽÄê¤Ë¤ÏInput.GetMouseButtonUp¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£¤³¤Î½èÍý¤Ï°ú¿ô¤Ç»ØÄꤵ¤ì¤¿¥Þ¥¦¥¹¤Î¥Ü¥¿¥ó¤¬Î¥¤ì¤¿¤È¤¤Ë°ìÅÙ¤À¤±¸Æ¤Ð¤ì¤Þ¤¹¡£
¡¡¥É¥é¥Ã¥°½ªÎ»È½Äê»þ¤Ë¡¢´³»Ù¤¬£³¤Ä°Ê¾å¤Ä¤Ê¤¬¤Ã¤Æ¤¤¤¿¤é¡Êºï½ü¥ê¥¹¥È¤Ë£³¤Ä°Ê¾å´³»Ù¤¬¤¢¤Ã¤¿¤é¡Ë´³»Ù¤òºï½ü¤·¡¢¾Ã¤¨¤¿Ê¬¤Î´³»Ù¤Î¿ô¤À¤±¿·¤·¤¤´³»Ù¤ò¥é¥ó¥À¥àÀ¸À®¤·¤Þ¤¹¡£
¤¢¤ë¤¤¤Ï¡¢´³»Ù¤¬£²¤Ä°Ê²¼¤·¤«¤Ä¤Ê¤¬¤Ã¤Æ¤¤¤Ê¤«¤Ã¤¿¤é¡Êºï½ü¥ê¥¹¥È¤Ë£²¤Ä°Ê²¼¤·¤«´³»Ù¤¬¤Ê¤±¤ì¤Ð¡Ë¡¢´³»Ù¤ò¾Ã¤µ¤º¤ËÁªÂò¤ò²ò½ü¤·¤Æ¡¢°ÊÁ°¤Î¾õÂÖ¤ËÌᤷ¤Þ¤¹¡£
¡¡¤³¤ì¤é¤Î¤¤¤º¤ì¤«¤Î½èÍý¤ò¥É¥é¥Ã¥°½ªÎ»»þ¤Ë¡¢ºï½ü¥ê¥¹¥È¤ËÅÐÏ¿¤µ¤ì¤¿´³»Ù¤Î¿ô¤Ë±þ¤¸¤Æ¡¢¼«Æ°¤Çʬ´ô¤·¤Æ½èÍý¤µ¤ì¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤¤Þ¤¹¡£
¡¡¤Þ¤¿¤É¤Á¤é¤Î½èÍý¤ò¹Ô¤Ã¤¿¾ì¹ç¤Ç¤â¼¡¤Î¥É¥é¥Ã¥°¤Î½èÍý¤Ë¸þ¤±¤Æ¡¢³ÆÊÑ¿ô¤ò¶õ(null)¤Ë¤·¤Æ¡¢ºÆÅ٥ɥé¥Ã¥°¤¬»Ï¤Þ¤Ã¤¿¤È¤¤ËÈ÷¤¨¤ë¤è¤¦¤Ë¤â¤·¤Æ¤ª¤¤Þ¤¹¡£
¡¡¤½¤ì¤Ç¤Ïº£²ó¤âGameManager¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤Þ¤·¤ç¤¦¡£
GameManager.cs
¡¡<=¡¡¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤¤Þ¤¹¡£
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class GameManager : MonoBehaviour
{
// º£¤Þ¤Ç¤ÎÀë¸À¥Õ¥£¡¼¥ë¥É¤Ï¤½¤Î¤Þ¤Þ¤Ê¤Î¤Ç¾Êά
IEnumerator Start() {
¡¡¡¡¡¡¡¡// Êѹ¹¤Ê¤·¤Î¤¿¤á¾Êά
¡¡¡¡}
private IEnumerator LoadEtoSprites(){
// Êѹ¹¤Ê¤·¤Î¤¿¤á¾Êά
}
private IEnumerator CreateEtos(int count) {
// Êѹ¹¤Ê¤·¤Î¤¿¤á¾Êά
}
¡¡¡¡void Update() {
// ´³»Ù¤ò¤Ä¤Ê¤²¤ë½èÍý
if (Input.GetMouseButtonDown(0) && firstSelectEto == null) {
// ´³»Ù¤òºÇ½é¤Ë¥É¥é¥Ã¥°¤·¤¿ºÝ¤Î½èÍý
OnStartDrag();
}
////* ¤³¤³¤«¤é½èÍý¤òÄɲÃ(½çÈÖ¤¬½ÅÍפʤΤǡ¢¤³¤Î½çÈÖÄ̤ê¤Ë else if ¤Ç½èÍý¤ò½ñ¤¤¤Æ¤¯¤À¤µ¤¤) *////
¡¡¡¡¡¡ else if (Input.GetMouseButtonUp(0)) {
// ´³»Ù¤Î¥É¥é¥Ã¥°¤ò¤ä¤á¤¿¡Ê»Ø¤òÎ¥¤·¤¿¡ËºÝ¤Î½èÍý
OnEndDrag();
}
////* ¤³¤³¤Þ¤ÇÄɲà *////
else if (firstSelectEto != null) {
// ´³»Ù¤Î¥É¥é¥Ã¥°¡Ê¥¹¥ï¥¤¥×¡ËÃæ¤Î½èÍý
OnDragging();
}
}
private void OnStartDrag() {
¡¡¡¡¡¡¡¡// Êѹ¹¤Ê¤·¤Î¤¿¤á¾Êά
}
private void OnDragging() {
// Êѹ¹¤Ê¤·¤Î¤¿¤á¾Êά
}
////* ¤³¤³¤«¤é¥á¥½¥Ã¥É¤ò£±¤ÄÄɲà *////
/// <summary>
/// ´³»Ù¤Î¥É¥é¥Ã¥°¤ò¤ä¤á¤¿¡Ê»Ø¤ò²èÌ̤«¤éÎ¥¤·¤¿¡ËºÝ¤Î½èÍý
/// </summary>
private void OnEndDrag() {
// ¤Ä¤Ê¤¬¤Ã¤Æ¤¤¤ë´³»Ù¤¬£³¤Ä°Ê¾å¤¢¤Ã¤¿¤éºï½ü¤¹¤ë½èÍý¤Ë¤¦¤Ä¤ë
if (eraseEtoList.Count >= 3) {
// ÁªÂò¤µ¤ì¤Æ¤¤¤ë´³»Ù¤ò¾Ã¤¹
for (int i = 0; i < eraseEtoList.Count; i++) {
// ´³»Ù¥ê¥¹¥È¤«¤é¼è¤ê½ü¤¯
etoList.Remove(eraseEtoList[i]);
// ´³»Ù¤òºï½ü
Destroy(eraseEtoList[i].gameObject);
}
// ¾Ã¤·¤¿´³»Ù¤Î¿ô¤À¤±¿·¤·¤¤´³»Ù¤ò¥é¥ó¥À¥à¤ËÀ¸À®
StartCoroutine(CreateEtos(eraseEtoList.Count));
// ºï½ü¥ê¥¹¥È¤ò¥¯¥ê¥¢¤¹¤ë
eraseEtoList.Clear();
} else {
// ¤Ä¤Ê¤¬¤Ã¤Æ¤¤¤ë´³»Ù¤¬£²¤Ä°Ê²¼¤Ê¤é¡¢ºï½ü¤Ï¤·¤Ê¤¤
// ºï½ü¥ê¥¹¥È¤«¤é¡¢ºï½ü¸õÊä¤Ç¤¢¤Ã¤¿´³»Ù¤ò¼è¤ê½ü¤¯
for (int i = 0; i < eraseEtoList.Count; i++) {
// ³Æ´³»Ù¤ÎÁªÂòÃæ¤Î¾õÂÖ¤ò²ò½ü¤¹¤ë
eraseEtoList[i].isSelected = false;
¡¡ // ´³»Ù¤Î¿§¤ÎÆ©ÌÀÅÙ¤ò¸µ¤ÎÆ©ÌÀÅÙ¤ËÌ᤹
ChangeEtoAlpha(eraseEtoList[i], 1.0f);
}
}
// ¼¡²ó¤Î´³»Ù¤ò¾Ã¤¹½èÍý¤Î¤¿¤á¤Ë¡¢³ÆÊÑ¿ô¤ÎÃͤònull¤Ë¤¹¤ë
firstSelectEto = null;
lastSelectEto = null;
currentEtoType = null;
}
////* ¤³¤³¤Þ¤ÇÄɲà *////
private void AddEraseEtolList(Eto dragEto) {
// Êѹ¹¤Ê¤·¤Î¤¿¤á¾Êά
}
private void RemoveEraseEtoList(Eto dragEto) {
// Êѹ¹¤Ê¤·¤Î¤¿¤á¾Êά
}
private void ChangeEtoAlpha(Eto dragEto, float alphaValue) {
// Êѹ¹¤Ê¤·¤¿¤á¾Êά
}
}
¡¡¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤¹¤ëºÝ¤Ë¤Ï¡¢Update¥á¥½¥Ã¥ÉÆâ¤Î½èÍý¤Î½çÈÖ¤ËÃí°Õ¤·¤Æ½ñ¤¤¤Æ¤¯¤À¤µ¤¤¡£½ç½ø¤ò´Ö°ã¤¨¤ë¤ÈÀµ¾ï¤ËÆ°ºî¤ò¤·¤Þ¤»¤ó¡£
¡¡EtoDistance¤ÎÃͤòÂ礤¯¤¹¤ë¤Û¤É¡¢´³»ÙƱ»Î¤Î¤Ä¤Ê¤¬¤ëÈϰϤ¬¹¤¯¤Ê¤ê¤Þ¤¹¡£´ð½àÃͤÏ1.0fÁ°¸å¤Ç¹Í¤¨¤ÆÄ´À°¤·¤Æ¤¯¤À¤µ¤¤¡£
¤Ä¤Ê¤¬¤ê¤¹¤®¤Æ¤â¡¢¤¢¤ë¤¤¤Ï¡¢¤Ä¤Ê¤¬¤é¤Ê¤¹¤®¤Æ¤â¥²¡¼¥à¤ÎÌÌÇò¤µ¤¬È¾¸º¤·¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
¸¡¾ÚÆ°²è
https://gyazo.com/139f2cf49b1df2972d840e39556b71e9
GameManager¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤ÎÆ°²è¡ÊEraseEtoList¤Ë£³¤Ä°Ê¾åÄɲ䵤ì¤Æ¤¤¤ì¤Ð¾Ã¤¨¤ë¡¢¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤Ë¤Ï¾Ã¤¨¤º¤ËÁªÂò¤¬²ò½ü¤µ¤ì¤ë¡Ë
https://gyazo.com/6c57d2070a5dab0b25a1857b8ad0cdba