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. adb 连接不上电脑怎么办?
  2. C#用了多线程界面还是卡死
  3. 基础训练——合并电话簿
  4. 用友元函数重载乘法,用成员函数重载除法
  5. git-bug分支-git-stash-工作代码与bug解决同时处理时解决模拟
  6. hikari数据源配置类_SpringBoot多数据源配置详解
  7. ad19pcb所有元件都在报错_AD09如何放置过孔阵列?Allegro PCB,元器件高度限制区域设置?...
  8. HTTP代理如何使用
  9. Web服务器是什么意思?
  10. 流量主头像组合微信小程序源码下载支持多种分类并支持姓氏头像制作生成
  11. Docker 入门,万字详解!
  12. 哈曼卡顿连接电脑后,突然变的声音好小的解决办法
  13. ios APP性能检测
  14. linux编译谷歌浏览器方法,构建Linux版本的谷歌Chrome浏览器
  15. 憨批的语义分割重制版11——Keras 搭建自己的HRNetV2语义分割平台
  16. 多张JPG图片怎么转成一个PDF
  17. Electron加载网页失败,监听事件处理
  18. 跳跳涂鸦——向上跳动游戏(学习笔记)
  19. 三:Job 和 JobDetail 详细介绍
  20. Android如何设置顶部状态栏颜色(主题)

热门文章

  1. 视频教程-《信息学竞赛-C/C++入门》 C++语言-C/C++
  2. 《口吃者的自我治疗》(6. 口吃者的12大行为准则)
  3. opencv图像融合
  4. AFNetworking 为韩流圈项目做的技术储备
  5. Spring filed
  6. Java 直接使用分数与整数相乘
  7. form表单的两种提交
  8. 树莓派底层IO驱动开发示例(一个简单io口驱动的开发)
  9. vscode的安装和彻底卸载vscode
  10. 查看PCIE带宽的信息