求Unity下Texure2DArrya应用实例,本网站上有的就不必了已经看完了 10C

求Unity下Texure2DArrya应用实例,本网站上有的就不必了已经看完了(或者没有完整实例)

实际需求是这样:
1生成一个2X2的网格

2在C#脚本里生成Texture2DArray
3使用一个shader 分别应用Texture2DArray 上的不同index的贴图 使四个网格的贴图贴上不同的四张贴图

已解决部分:1生成网格 2在C#脚本里生成Texture2DArray
未解决部分 3 使用一个shader 分别应用Texture2DArray 上的不同index的贴图 使四个网格的贴图贴上不同的四张贴图

下面是已解决部分的代码

 public class T9arr : MonoBehaviour
{

    public Texture2D tex2d;
    public Material material;
    public Texture2DArray tex2dArr;
    public Mesh mesh;
    public MeshFilter meshFilter;

    int texWidth;
    int texHeight;
    int cellCountWidth;
    int cellCountHeight;
    public Texture2D[] tex2ds;

    int rowCount;
    int columCount;



   // [HideInInspector]
    public int MapWidth =2;
   // [HideInInspector]
    public int MapHeight = 2;
   // [HideInInspector]
    public int MapDepth = 1;
    void Start()
    {
        tex2d = (Texture2D)UnityEditor.AssetDatabase.LoadAssetAtPath("Assets/T8/" + "pst1" + ".jpg", typeof(Texture2D));

        string assetPath = AssetDatabase.GetAssetPath(tex2d);
        var tImporter = AssetImporter.GetAtPath(assetPath) as TextureImporter;
        if (tImporter != null)
        {
            tImporter.textureType = TextureImporterType.Default;

            tImporter.isReadable = true;

            AssetDatabase.ImportAsset(assetPath);
            AssetDatabase.Refresh();
        }
        rowCount = MapWidth + 1;
        columCount = MapHeight + 1;
        material = GetComponent<MeshRenderer>().material;
        meshFilter = GetComponent<MeshFilter>();



        SetTexure();
        CreatMesh();


    }
    void SetTexure()
    {
        texWidth = (int)tex2d.width / 16;
        texHeight = (int)tex2d.height / 16;

        cellCountWidth = Mathf.FloorToInt(tex2d.width / texWidth);
        cellCountHeight = Mathf.FloorToInt(tex2d.height / texHeight);

        tex2dArr = new Texture2DArray(texWidth, texHeight, cellCountWidth * cellCountHeight, TextureFormat.RGBA32, false);
        tex2ds = new Texture2D[cellCountWidth * cellCountHeight];
        Texture2D temptex2d = new Texture2D(texWidth, texHeight, TextureFormat.RGBA32, false);
        int t = 0;
        for (int i = 0; i < cellCountWidth; i++)
        {
            for (int j = 0; j < cellCountHeight; j++)
            {
                tex2ds[t] = new Texture2D(texWidth, texHeight);
                temptex2d.SetPixels(tex2d.GetPixels(texWidth * i, texHeight * j, texWidth, texHeight));

                temptex2d.Apply();
                tex2dArr.SetPixels(temptex2d.GetPixels(), t);
                tex2ds[t].SetPixels(temptex2d.GetPixels());
                t++;
            }
        }
        tex2dArr.Apply();
        material.SetTexture("_Texture2DArray", tex2dArr);
        // material.SetFloatArray("_esuv", uvMapping);




    }
    Vector3[] BaseVertex;
    List<int> TriangleFullVertexList = new List<int>();
    List<Vector3> MapFullVertexList;
    public static List<Vector3> BasePointPosList =new List<Vector3>() ;
    public List<float> uvMapping = new List<float>();

    void CreatMesh()
    {
        BasePointPosList.Clear();
        Uves.Clear();
        TriangleFullVertexList.Clear();
        BaseVertex = CreateBaseVertex(rowCount, columCount, 1); //创建第一轮基本顶点 无复用
        BasePointPosList.AddRange( CreateBasePoint(MapWidth, MapHeight)); //创建地图点基本中心点
        MapFullVertexList = CreateBaseFullVertexs(MapWidth, MapHeight, BaseVertex, out TriangleFullVertexList);//第二轮全部顶点的创建(有复用)

        mesh = new Mesh();
        mesh.vertices = MapFullVertexList.ToArray();
        mesh.triangles = TriangleFullVertexList.ToArray();
        mesh.uv = Uves.ToArray();
        mesh.RecalculateBounds();
        mesh.RecalculateNormals();
        meshFilter.sharedMesh = mesh;

        new WaitForEndOfFrame();
        Vector2[] vector3s = mesh.uv;

        foreach (Vector2 v2 in vector3s)
        {
            Debug.Log(v2);
        }

    }
    public List<Vector2> Uves = new List<Vector2>();
    private List<Vector3> CreateBaseFullVertexs(int mapWidth, int mapHeight, Vector3[] baseVertex, out List<int> TriangleIntList)
    {

        List<Vector3> tempFullVertexList = new List<Vector3>();
        TriangleIntList = new List<int>();
        int PointCount = MapWidth * MapHeight;
        for (int cellIndex = 0; cellIndex < PointCount; cellIndex++)
        {

            int C0 = cellIndex + Mathf.FloorToInt(cellIndex / MapHeight);
            int C1 = C0 + 1;
            int C2 = cellIndex + Mathf.FloorToInt(cellIndex / MapHeight) + (MapHeight + 1);
            int C3 = C2 + 1;



            tempFullVertexList.Add(baseVertex[C0]);  //0
            tempFullVertexList.Add(baseVertex[C1]);  //1
            tempFullVertexList.Add(baseVertex[C3]);  //2
            tempFullVertexList.Add(baseVertex[C2]);  //3


            TriangleIntList.Add(cellIndex * 4 + 0);//0
            TriangleIntList.Add(cellIndex * 4 + 3);//3
            TriangleIntList.Add(cellIndex * 4 + 2);//2
            TriangleIntList.Add(cellIndex * 4 + 0);//0
            TriangleIntList.Add(cellIndex * 4 + 2);//2
            TriangleIntList.Add(cellIndex * 4 + 1);//1
                                                   //注意,UV 添加必须遵循顶点添加的顺序
                                                   //注意 该部分未解决
            //Uves.Add(new Vector2(0, 1));           //0
            //Uves.Add(new Vector2(1, 1));           //1
            //Uves.Add(new Vector2(2, 3));           //2
            //Uves.Add(new Vector2(3, 3));           //3


        }

        return tempFullVertexList;
    }

    public static Vector3[] CreateBaseVertex(int rowCount, int columCount, int depthCount)
    {
        Vector3[] temaArr = new Vector3[rowCount * columCount];
        int i = 0;
        for (int x = 0; x < rowCount; x++)
        {
            for (int z = 0; z < columCount; z++)
            {
                temaArr[i] = new Vector3(z-0.5f, 0, x-0.5f);
                i++;
            }
        }
        return temaArr;
    }
    public static Vector3[] CreateBasePoint(int mapWidth, int mapHeight)
    {
        Vector3[] temaArr = new Vector3[mapWidth * mapHeight];
        int i = 0;
        for (int x = 0; x < mapWidth; x++)
        {
            for (int z = 0; z < mapHeight; z++)
            {
                temaArr[i] = new Vector3(x + 0.5f, 0, z + 0.5f);

            }
        }       
        return temaArr;
    }
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
看完了.
看完了. 感觉又有一种很好的思想.真不错.又进步了. posted on 2007-01-07 12:50 lbsjs 阅读(...) 评论(...) 编辑 收藏 ...
unity socket应用实例
unity socket应用实例,经典应用套接字做网络游戏开发
unity应用实例——电梯模拟系统
电梯模拟系统是很多计算机专业的大学生必做的题目,整个系统有着复杂严谨的逻辑。而unity作为一个强大的游戏引擎,除了开发游戏外,也可以作为一个可视化软件,用来模拟电梯的运行再好不过。这篇博客就给大家介绍一个用unity可视化的电梯系统,下面先上效果图。 电梯当前运行状态为上升,黄色小人代表发出...
终于看完了《创世纪》
    昨天看了最后20多集,看完已经5点半了,差不多天亮。真的比较累,早上上班也偷懒了,浮了一下头就跑回去睡觉了。     《创世纪》这部片我觉得还是很有意义的。亲情、友情、爱情的交织……还有一大堆,改天在写。现在没想写。...
第一次看完了《数据结构》
看完了严蔚敏的《数据结构》,看懂了一点点,堆栈后面的,就有点看不懂或者说不知道读者的重点了,可能和最近自己找工作有些关系吧,整体来说,挑战了自己对于这一块知识的恐惧,自己克服了恐惧吧。只看懂了一些,另外还有好多没有看懂。计划下,看看怎么安排,学习数据结构与算法这一块的知识。...
看完了后
本身对tcp/ip协议,linux环境下编程也比较熟悉,想学习一下在linux环境下的网络编程,最近差不多看完了,感觉还应该找一个比较系统而且实用的网络程序来学习学习rn请各位推荐一个好的开源代码
看完了《图解http》
今天花了3个小时把《图解HTTP》看完了,简单总结下收获,以之前对HTTP的了解,这本书讲得比较详细,扩展的东西也比较多,如Web 内容与 Web 攻击技术。全书可以分为四个部分: 1. 介绍http,主要讲历史与发展史 2. 详细讲解http与状态码消息头 3. 主要讲http的完全性https 4. 未来发展与web 技术受益最多的是https,那部分,书中说得非常精彩,生动有趣,特别是
算法导论终于看完了~
算法导论只是导论而已。讲的内容很基础。就像《深入理解计算机系统》一样。初中数学对看算法导论很有用。没看错。初中数学就能很好地帮助理解其中大部分内容。用ipad看ppt,理解每章节讲的内容,理解前后内容的关系,也很重要。比如下面:先讲a**n算法介绍logn时间复杂度的算法。再讲斐波那契数列的矩阵关系。得到矩阵的n次方。然后就可以直接声明计算Fn的logn时间复杂度。其中的逻辑就是初中常用的代换法。...
看完了 听完了 再说好不好
最佳的网创《这种网站创意在国内还是一个空白》 最佳的合作伙伴 《现在已经有几个人》现在就差一个技术过硬的人来领导我们QQ36607499 有意思的加QQ详谈 一次绝对不会让你后悔的谈话
看完了的上卷, 下一步?
终于看完了的上卷, 不知道下一步要看些什么书做些rn什么工作才能巩固知识,进而更上一层楼?rnrn
struts2视频教程看完了
今天终于把struts2的视频教程看完了,说实话收获还是挺多的。 特别是讲到拦截器的源码的时候,看到人家的源码写的真是太好了。 接下来该花些时间好好练习了,否则看完又成白看了。 正如视频上所讲,最重要的莫过于OGNL表达式了,要求精通。所以接下来好好研究研究吧。...
vc++已经看完了,接下来看<>还是<>啊?
本人学vc,近期遇到一个问题,vc++已经看完了,现在手头有 两本书,windows核心编程,和深入浅出mfc,到底先看那一本呢,清高手赐教.感激不尽,定当感激涕零
已经看完了《Thinking in Java》,接下来该如何学?
我用两个月的时间看完了《Thinking in Java》,不过没有做题,请教各位,接下来我该如何学,是做做题或者作点小东西巩固呢还是接着学习J2EE或者J2ME的好?
在已经有的项目上建立WebService
网上有很多直接建立WebService的实例,但是问题是我现在项目已经完成了,想在Web项目中建立一个WebService,查了相关资料后,所以有了这篇文章。 首先在你的项目上右键---build path,把JAX_WS的两个myeclipse自带的包导入项目。 然后 new --webService --选择你需要的项目 选择你的项目,并选择如图红框处 以及选择你
怎么样在一个已经有的图片上绘图。
如题,在一个已知的图片上加几个点。rn
深入浅出MFC看完了,应该看WINDOWS核心编程?
如题。rn发现看完后只是对框架、MFC一些技术的实现了解了,但是写程序还不行rnrn是不是应该看windows核心变成了?
LitJson 在Unity项目中的应用实例
LitJson 在Unity项目中的应用实例:内涵源代码,导入后先在Assets下新建Data文件夹,注意和代码中 的读取路径保持一致。
看完了《设计模式》该干什么了?
看完了,然后呢?
终于看完了第三部分
花了半年时间终于看完了3D编程的第三部分,弄懂了很多渲染方面知识,进步很大,可喜可贺!
我把编译原理看完了
  从2017年7月8号吧貌似,开始看.周六和周日看,回老家的时候不看.起初个周末看10页.后来加大量,每周看20页.看完了.看完之后算是对整个编译过程有了一个大概了解,看的时候没有太细扣.   全书我就发现2处错字,厉害.这么多字,居然只有2处错字(我发现的).我总算补上了一直都想补的一块,真的是好开心.今后工作中遇到类似问题,我也会有思路.而且之前工作中,知道开优化来优化,已经是有应用了.以...
Spring2.0技术手册看完了^-^
没想到这本书居然看完了 :D 耗时23天。七天假期除去。15天!好像还没这么快看过一本书呢(小说除外。。。) :o 庆祝一个。 下面开始ssh的集成尝试和深入学习 :D ...
散分! 刚看完了
刚看完了。rn 除了最后两章讲解两个例子。rn 好累啊~rn 看了整整40天.rnrnrn [color=#FF0000] [size=24px] 散分!!!!![/size][/color]
刚看完了Java2实用教程
刚看完了Java2实用教程,觉得写得很不错,深入浅出.接下来该看什么好书呢?请各位CSDN的牛人介绍介绍,谢谢!
deray之旅 - 今天看完了
大概半年前吧,知道了有个人从北京汽车到巴黎,当时觉的很震惊,   144天的旅行   断断续续的看,作者文笔风趣,很符合我的胃口,骑车的活动是发生在2007年,事后两三年我才看,不过依然很过瘾   没事看两篇旅行日记成了我的调节剂,心跟着deray从北京一路飞到了巴黎,看着作者的一路旅行,甚是佩服羡慕   心想,将来有一天,我也会骑着车去旅行,嗯,志在必行,那现在就要先好好锻炼身体...
在WEB中,如何检测已经注册的用户是否在本网站上已经登陆?
RT
坛上所有的中文问题的贴子都看完了,还是不解决问题:(((
我的系统是2000sp3+mysql4.012rnrn为什么我在winmysqladmin工具中已经看到character_set=gb2312还是显示乱码呢?改为gbk仍然如此!!rnrn在重装机子之前,照精华区做法(也不知道是针对windows下还是linux下)至少在工具winmysaqladmin(也只有在此工具中显示找到了my.ini,可是在机子中找不到!!)中还能正确显示中文,现在不行了!!rnrn没法子玩了,重装机子后到是能找到my.ini,可是……rnrn这可怎么好啊?项目怎么出的来啊?真急死了……rnrnrnrn: 哎,几乎所有的手册都是针对linux系统的,windows下好像区别很大啊,命令也不一..rn: 也不知道是版本的问题,还是系统平台的问题。我运行mysql>quit命令有时候就退不..rn: s提示符,照旧是mysql的提示符。真郁闷啊!rnrn这到底怎么了,装了2次mysql都出现一个问题,那就是mysql提示符下的命令执行总是怪怪的,举例如下:rn1、mysql>quitrn有时候(大多数时候)退不回dos环境,仍然是mysql命令行!rn2、mysql>show variablesrn没有任何反应!仍然出来mysql>提示符环境!rn3、印象中除了\h命令会出来东西,以及有时候会出来语法错误的提示之外,我试过的所有命令都在dos窗口中没有反馈。rnrn真的快要疯了,帮帮我!等着两天份数增加了就给这个贴子加分!rn
vc++应用实例初级者看
vc应用实例,包含一些具体应用例子,是初级学习者的选择,好不好,看过就知道,
完了,我彻底的完了,求命啊~~~~~~~~~
今天,朋友问我一个程序出错的原因,我...,请各位先看如下:rnpublic interface Capablernrn public int refuel();rnrnrnpublic class Snowmobile implements Capablernrn public int refuel()rn rn System.out.println("This is a Snowmobile Class");rn return 2;rn rnrnrnpublic class Airplane implements Capablernrn public int refuel()rn rn System.out.println("This is a Airplane Class");rn return 1;rn rnrnrnpublic class SupplyDepotrnrn public void service(Capable c)rn rn int i=c.refuel();rn System.out.println(i);rn rnrnrnpublic class demo_1rnrn private Airplane a;rn private Snowmobile s;rn public demo_1()rn rn a=new Airplane();rn s=new Snowmobile();rn rn public static void main(String args[])rn rn SupplyDepot sd=new SupplyDepot();rn sd.service(a);rn sd.service(s); rn rnrnrnrnpublic class demo_2rnrn private Airplane a;rn private Snowmobile s;rn public demo_2()rn rn a=new Airplane();rn s=new Snowmobile();rn rn public static void main(String args[])rn rn new demo().init();rn rn public void init()rn rn SupplyDepot sd=new SupplyDepot();rn sd.service(a);rn sd.service(s); rn rnrnrn/******************************* 描 述 如 下 *******************************/rn起初,朋友编译demo_1时,出现以下错误:rnnon-static variable a/s cannot be referenced form a static contextrn就问我怎么改,改动后(即:demo_2)就可以成功编译并运行,结果朋友再来一句,为什么要先创建一个demo_2对象才能运行,我...无言以对.回家后,想想,对啊,为什么要先创建一个demo_2才能运行.平时就是这样子用,可从来没想过为什么.rnrn唉~~~~~~~完了,彻底的完了...rnrn好心人,救救我........(不够分的可以再加)
完了,这下全完了!求命
ACCESS 问题rnrn我在本地机上测试时,程序没有问题.但传到服务器上凡是进行rninsert和update操作的都会:rnrnMicrosoft OLE DB Provider for ODBC Drivers 错误 '80004005' rnrn[Microsoft][ODBC Microsoft Access Driver] 操作必须使用一个可更新的查询。 rnrn/admin/gsxw/xwgl.asp,行47 rnrn怎么办啊?急死人了!
如何导入数据,实现关键字段数据库中已经有的就更新,没有的就添加?
如题。rn主要是这样的应用:rn数据库中有个学生数据,每年有新生加入,也有老生数据更新。如何实现,关键字段比如是学号,数据库中已经有的,则自动更新数据,没有的则自动添加数据,自己想法,不知道能不能实现。rnrn多谢各位大侠!!rn
最近恶补标准C ,我把《The C Programming language》已经看完了,求进阶书籍!!
请大家帮帮忙,推荐些好书,最好是中文的,可以看得快点,如果没有出中文版,E文版的也行,谢谢!
留言本网站.
留言本网站. 网页的建立,保存,打开 站点的建立 页面属性的修改 表单设置 描绘层及插入FLASH动画
java里就不必这样了吧
好像从C,C++转过来的前辈,都喜欢把JAVA里的方法叫做函数,很是不习惯,函数很有过程的感觉,而方法就很符合对象的思想,不知道各位意下如何?
Roboguice2.0在Android上的应用实例
Roboguice2.0不兼容1.x版本的包,新的版本也加入了很多新的特性,更好用,这个例子只是一个很简单的例子,主要是记录一下,O(∩_∩)O哈哈~
2天后就完了!!!!求救!!!!
老兄:您快点出招呀,还没有2of5码,2天后我就完了。rn就没人有interleaved2of5条形码字库吗?或制作方法?重酬!!!哪个老兄快帮忙,不然死定了。。。回复qq8756715@163.comrn
Session,一关闭浏览器,就完了。
[code=HTML]<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>rnrnrnrn rn 无标题文档rnrnrnrn<%rn Session("State") = "Yes"rn%>rnrn[/code]rnrn[code=HTML]<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>rnrnrnrn rn 无标题文档rnrnrnrn<%rn if Session("State") = "Yes" then rn Response.Write(Session("State"))rn end ifrn%>rnrn[/code]rnrnrn开了和一个,再开第二个,能输出。rnrn关了第一个,再关第二个,再开第二个,完了。没输出。
jFreeChart收藏,大家就不必看了
NULL 博文链接:https://rmn190.iteye.com/blog/362349
触摸屏在S3C2410上的应用实例
S3C2410的ADC和触摸屏接口,有结构图,触摸屏接口实例,ADC数据转换。
本网站上计算机网络试题与解答综合
本网站上计算机网络试题与解答综合本网站上计算机网络试题与解答综合本网站上计算机网络试题与解答综合本网站上计算机网络试题与解答综合
触摸屏在S3C2410 上的应用实例
给出 S3C2410上触摸屏的实现原理、硬件结构和软件程序;对软件进行优化,改进软件滤波的实现 摘 要 方法。其算法使用 C语言实现,可移植到任何操作系统的触摸屏驱动程序中。
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件