unity3d里面随风摇摆的动态树怎么制作出来的?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity3d里面随风摇摆的动态树怎么制作出来的?相关的知识,希望对你有一定的参考价值。
参考技术A Unity 游戏开发中,有许多功能的实现都可以通过在 Unity 的资源商店找到比较好的插件来实现,当你在为某个开发问题发愁时,不妨在 Unity 的资源商店里搜索对应的开发需求的关键词,说不定你就能找到你相见恨晚的插件,可能插件需要购买,但是为了提高开发效率,有些钱还是值得去花的,与其自己绞尽脑汁去编写,还不如去喝杯咖啡,做点美好的事。 参考技术B 利用shader的顶点偏移来实现(vertex offset)摇摆打印二叉树
问题:
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
分析:
(1)对树进行层次遍历:使用队列
(2)需要单独记录每一层的序列:两个队列交替使用
code:
//树节点 public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { /* 层次遍历:队列 奇数行:左——>右 偶数行:右->左(奇数行的逆序) */ ArrayList<ArrayList<Integer>> allList = new ArrayList<ArrayList<Integer>>(); if(pRoot==null){ return null; } Queue<TreeNode>[] queue = new Queue[2]; queue[0] = new ArrayDeque<>();//奇数行 queue[1] = new ArrayDeque<>();//偶数行 int count=1; //记录当前到达的层数 queue[1].add(pRoot); while(!queue[0].isEmpty() || !queue[1].isEmpty()){ ArrayList<Integer> list = new ArrayList<>(); while(!queue[count%2].isEmpty()){ TreeNode temp = queue[count%2].poll(); list.add(temp.val); if(temp.left!=null){ queue[(count+1)%2].add(temp.left); } if(temp.right!=null){ queue[(count+1)%2].add(temp.right); } }
//偶数行:翻转序列 if(count%2==0){ Collections.reverse(list); } allList.add(list); count++; } return allList; }
以上是关于unity3d里面随风摇摆的动态树怎么制作出来的?的主要内容,如果未能解决你的问题,请参考以下文章
怎么用JAVA动态生成一个表格 ?从数据库读出数据 然后用JSP页面显示出来 形成一个表格