UNITY 2D开发,对地图划分为21x21=441块,改变每一块的图片加载,达到显示地图对象的目的。

不好意思,这是一种非常笨的办法。。。

核心代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using UnityEngine.Events;
using System.Linq;public class scriptbase : MonoBehaviour {public static List<Vector4> MyGlobal ;List<Vector4> points;List<Vector4> max441;List<GameObject> list;GameObject[,] go;int map_lefttop_x, map_lefttop_y;void Start(){    //  InvokeRepeating("Do", 0, 0.1f);points = new List<Vector4>();  //1000个坐标初始化for (int i = 0; i < 1000; i++){ points.Add(new Vector4(Random.Range(0, 120), Random.Range(0, 120),i)); }max441 = new List<Vector4>();//二维数组,声明 441个GO对象go = new GameObject[21, 21];for (int i = 0; i < 20; i++){for (int j = 0; j < 20; j++){go[i,j] = new GameObject();go[i,j].transform.SetParent(GameObject.Find("Image420").transform); //挂到父物体上go[i,j].AddComponent<RectTransform>();go[i,j].AddComponent<RawImage>(); EventTriggerListener.Get(go[i,j]).onClick = OnButtonClick;//按键事件go[i, j].SetActive(false);}}}private void OnButtonClick(GameObject go){Debug.Log(go.name.ToString());GameObject.Find("Text2").GetComponent<Text>().text = "村民 ID:" + go.name.ToString();}// Update is called once per framevoid FixedUpdate(){       }void Do(){// new WaitForSeconds(0.01f);if (Input.mousePosition.y < 40 && Input.mousePosition.y > 10)//if (Input.GetKeyDown(KeyCode.UpArrow)){map_lefttop_y--;//1、查询坐标点阵数据var turemap = from Vector4 in points where Vector4.x >= map_lefttop_x && Vector4.x <= (map_lefttop_x + 20) && Vector4.y >= map_lefttop_y && Vector4.y <= (map_lefttop_y + 20) select Vector4;//2、清空原来441个点阵数据max441.Clear();//3、新坐标加到441个点中foreach (Vector4 m in turemap){Vector4 n = new Vector4();n = m;n.y = n.y - map_lefttop_y;n.x = n.x - map_lefttop_x;                max441.Add(n);}//4、屏幕对象停止for (int i = 0; i < 20; i++){for (int j = 0; j < 20; j++){go[i, j].SetActive(false);}}//5、屏幕对象活动for (int i = 0; i < 20; i++){for (int j = 0; j < 20; j++){foreach (Vector4 v in max441){if ((v.x == i) && (v.y == j)){go[i, j].GetComponent<RectTransform>().localPosition = new Vector3(20 * i, 20 * j, 0);go[i, j].GetComponent<RawImage>().texture = (Texture2D)Resources.Load("villager");go[i, j].GetComponent<RawImage>().SetNativeSize();go[i, j].SetActive(true);go[i, j].name = v.z.ToString();break;}}}}}else if (Input.mousePosition.y < 430 && Input.mousePosition.y > 410)//if (Input.GetKeyDown(KeyCode.DownArrow)){map_lefttop_y++;var turemap = from Vector4 in points where Vector4.x >= map_lefttop_x && Vector4.x <= (map_lefttop_x + 20) && Vector4.y >= map_lefttop_y && Vector4.y <= (map_lefttop_y + 20) select Vector4;max441.Clear();foreach (Vector4 m in turemap){Vector4 n = new Vector4();n = m;n.y = n.y - map_lefttop_y;n.x = n.x - map_lefttop_x;max441.Add(n);}for (int i = 0; i < 20; i++){for (int j = 0; j < 20; j++){go[i, j].SetActive(false);}}for (int i = 0; i < 20; i++){for (int j = 0; j < 20; j++){foreach (Vector4 v in max441){if ((v.x == i) && (v.y == j)){go[i, j].GetComponent<RectTransform>().localPosition = new Vector3(20 * i, 20 * j, 0);go[i, j].GetComponent<RawImage>().texture = (Texture2D)Resources.Load("villager");go[i, j].GetComponent<RawImage>().SetNativeSize();go[i, j].SetActive(true);go[i, j].name = v.z.ToString();break;}}}}}///else if (Input.mousePosition.x < 36 && Input.mousePosition.x > 16)//if (Input.GetKeyDown(KeyCode.LeftArrow)){map_lefttop_x--;var turemap = from Vector4 in points where Vector4.x >= map_lefttop_x && Vector4.x <= (map_lefttop_x + 20) && Vector4.y >= map_lefttop_y && Vector4.y <= (map_lefttop_y + 20) select Vector4;max441.Clear();foreach (Vector4 m in turemap){Vector4 n = new Vector4();n = m;n.x = n.x - map_lefttop_x;n.y = n.y - map_lefttop_y;               max441.Add(n);}for (int i = 0; i < 20; i++){for (int j = 0; j < 20; j++){go[i, j].SetActive(false);}}for (int i = 0; i < 20; i++){for (int j = 0; j < 20; j++){foreach (Vector4 v in max441){if ((v.x == i) && (v.y == j)){go[i, j].GetComponent<RectTransform>().localPosition = new Vector3(20 * i, 20 * j, 0);go[i, j].GetComponent<RawImage>().texture = (Texture2D)Resources.Load("villager");go[i, j].GetComponent<RawImage>().SetNativeSize();go[i, j].SetActive(true);go[i, j].name = v.z.ToString();break;}}}}}///else if ( Input.mousePosition.x<420 && Input.mousePosition.x>400  ) //if (Input.GetKeyDown(KeyCode.RightArrow)){map_lefttop_x++;var turemap = from Vector4 in points where Vector4.x >= map_lefttop_x && Vector4.x <= (map_lefttop_x + 20) && Vector4.y >= map_lefttop_y && Vector4.y <= (map_lefttop_y + 20) select Vector4;max441.Clear();foreach (Vector4 m in turemap){Vector4 n = new Vector4();n = m;n.x= n.x - map_lefttop_x;n.y = n.y - map_lefttop_y;               max441.Add(n);                }     for (int i = 0; i < 20; i++){for (int j = 0; j < 20; j++){go[i, j].SetActive(false);}}for (int i = 0; i < 20; i++){for (int j = 0; j < 20; j++){foreach(Vector4 v in max441 ){if ((v.x == i) && (v.y == j)){go[i, j].GetComponent<RectTransform>().localPosition = new Vector3(20 * i, 20 * j, 0);go[i, j].GetComponent<RawImage>().texture = (Texture2D)Resources.Load("villager");go[i, j].GetComponent<RawImage>().SetNativeSize();go[i, j].SetActive(true);go[i, j].name = v.z.ToString();break;                       }                   }}            }}GameObject.Find("Textmouse").GetComponent<Text>().text = map_lefttop_x + "," + map_lefttop_y;//  GameObject.Find("Textmouse").GetComponent<Text>().text = Input.mousePosition.ToString(); }void showpic(){}void OnGUI()
{
}}/*list = new List<GameObject>();for (int i = 0; i < 441; i++){ list.Add(new GameObject("A" + i.ToString())); }foreach (GameObject go in list){go.transform.SetParent(GameObject.Find("Image420").transform); //挂到父物体上// go.AddComponent<RectTransform>();// go.GetComponent<RectTransform>().localPosition = new Vector3(20 * Random.Range(0, 120), 20 * Random.Range(0, 120), 0);//  go.GetComponent<RectTransform>().pivot.Set(10, 10);RawImage img = go.AddComponent<RawImage>();img.texture = (Texture2D)Resources.Load("villager");img.SetNativeSize();EventTriggerListener.Get(go).onClick = OnButtonClick;//按键事件}
*/

UNITY2D 地图滚动DEMO相关推荐

  1. 实现百度地图导航Demo的语音播报功能

    上文中实现了在本地导入百度地图导航Demo,那么在此基础上如何实现导航的语音播报呢? 一.为该应用申请语音播报(也叫注册) http://developer.baidu.com/map/index.p ...

  2. vue使用高德地图小demo(标记点,画线,3D,叠加图片图层)

    vue使用高德地图小demo(标记点,画线,3D) 这个模式是3D的,可以看到地图是带有一定的倾角的. 注意:3D模式下,是不能够将进行画线的,不能使用PathSimplifier,改成2D可以正常使 ...

  3. Cocos2d-x 实现地图滚动,解释缝隙产生的原因以及解决方案

    温馨提示:如果只是找缝隙解决方案的请直接跳到最后的第4点. 在跑酷游戏(天天酷跑)或者射击游戏(打飞机)中都有背景循环移动的机制.网上也有很多的实现方法,我这里先直接用代码反映出来: 首先申明的是我这 ...

  4. cocos植物大战僵尸(三)游戏场景:地图滚动

    2.3游戏场景 2.3.1 地图滚动 根据json表读取出,当前关卡要载入哪张地图,并读取当前地图的相关.Json表为数组结构,配置如下: [{"Level":0,"Ma ...

  5. java实现高德地图app,Android 高德地图入门demo,最新高德地图实现方法,附源码及apk...

    [实例简介] Android 高德地图入门demo,最新高德地图实现方法,附源码及apk [实例截图] [核心代码] GaoDeDemo ├── GaoDeDemo │   ├── app │   │ ...

  6. 【Cocos2D-X 游戏引擎】初窥门径(7)无限地图滚动

    地图的滚动原理很简单,就是持续设置地图的位置即可.具体实现用schedule()函数. pMap = CCSprite::create("MapHenn.png");pMap-&g ...

  7. iOS--高德地图聚合demo

    之前在网上搜索高德地图聚合的demo,没有搜到,所以自己搞了一份,整理下跟大家分享,互相学习.下面转入正题. 首先,得在高德地图的开放平台去注册项目所需的key (http://lbs.amap.co ...

  8. 游戏编程基础(五)背景地图滚动显示

    在游戏过程中,背景地图需要跟着人物的移动而动态的滚动变换.C++游戏编程基础中介绍了2D游戏中常用的3种动态背景表现手法.其原理和实现技巧分析如下: 方法一:单一背景滚动         原理是:利用 ...

  9. BaiduMap---百度地图官方Demo之OpenGL绘制功能(介绍如何使用OpenGL绘制在地图中进行绘制)

    <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=&q ...

最新文章

  1. 快速了解上市公司年报
  2. 如何手动关闭tomcat服务,不在Eclipse中的server里按那个红色按钮关。
  3. ES6对象(2):面向对象与类
  4. 知识点滴:持久层,DAO,API,DAL,BLL,DLL,csproj,sln
  5. Django 缓存系统
  6. sequelize 外键关联_用Sequelize计算关联条目
  7. java 枚举获取key_「Java必修课」HashMap性能很好?问过我EnumMap没
  8. MongoDB 最大连接数 设置失效的异常分析
  9. IOS 在终端( Terminal )开发
  10. windows系统bat批处理 网络设置大全 设置静态、动态IP地址
  11. 【转】用photoshop批量修改图片尺寸
  12. 刘奇:当今一切都要更实时、更弹性、更简单,TiDB 就是这样的基础设施 | TiDB DevCon 2020
  13. 阿里云 ECS迁移数据至腾讯云云服务器
  14. Docker系列 利用RSShub搭建个人RSS源 从此万物皆RSS
  15. 盒子综合案例——德云社十八愁与宠物知识栏
  16. initialization on demand holder
  17. 基于Java的中国象棋对弈系统
  18. java 调用felix_使用eclipse开发felix的OSGI插件
  19. proteus仿真arduino控制舵机
  20. 苹果cms8整合dplayer播放器

热门文章

  1. c语言中parameter和argument的区别
  2. Delphi图像处理 -- 图像合成
  3. Print Spooler服务对打印的影响
  4. MOOS-Ivp初学
  5. 寻找生成元问题解决(Digit Generator,ACM/ICPC Seoul 2005, UVa1583)
  6. JAVA学习之前端知识掌握Day002
  7. 【UnityUGUIShader】创建材质球Material代码控制更换物体材质球
  8. HTML5期末大作业:海贼王网站设计——代码质量好-海贼王(6页) 学生漫画网页设计模板代码 漫画网页制作模板 学生简单动漫网站设计成品
  9. java sha1hash ios_是否可以在java Manifest文件中使用SHA1-Digest而无需实际使用密钥
  10. 【新】Python获取前N周时间开始日期和截止日期