是什么在阻止我们学习unity2019?
背景
时过境迁,这是一篇老文,写于2019年5月。
在学习最新的unity ecs过程中,以及学习最新的effect 时,在迈出第一步的时候即遭遇一些困难(学习和测试环境搭建不起来,有时候真的很无语),造成了一种“出师未捷,身先死”的赶脚。
实现
经过不断的尝试,实验和总结,总于有了很好的解决方案。
首先描述一下问题
具体问题以 ECS为例,按照官方以及大佬的教程和样例,
1、无法通过packages manager(国内部分网络如中国移动宽带)进行必要的包下载
2、可下载大佬教程例子,但包下载冲突或者api过期无法编译(初学者直接蒙逼,一声叹息!)
问题1的原因,unity 2018版本后推出了Package manager进行自己开源和第三方开源的包和插件的管理(类似.net nuget,又跟风) 大概可以定位到Package manager 用了一种本地代理的技术进行包下载,鉴于国内恶略的网络环境出现问题也是正常,解决方案 其实就是两种
a、土豪法,直接给网络搞定,这个就不用我多说了,土豪都懂得
b、屌丝法 又分为三个方法
1) 直接通过 packages 的mainfast.json配置文件进行包管理,目前github 下载下来的工程基本默认是这种方式,但是还是会出现不好用的情况(其实出现这种问题可以归结到问题2,这个在问题也是的解决方法中,描述解决方法)
2) 通过直接拷贝packages包的源文件文件夹进行解决,这个也是一些网上的unity新版本学习先行者提出来的,理论可行但是比较麻烦,首先要能正确下载需要的包文件,这个其实倒是不难,但是这种方法总显得有些麻烦,毕竟不如方法1 来的方便,所以不推荐使用
3) 通过修改 mainfast.json 配置文件进行 package 本地离线配置,进行包管理,实际上解决的方式很暴力,不是网络下载不了吗,那我直接使用离线版本行了吧,通过此方法竟然还能带来一个神奇的副作用,可以直接编译,debug 包的源代码了(比如我们要深入学习unity ecs系统就特别happy)。
文后附件,我会提供相关的配置文件和工程源码有需要的同学自己自行获取。
问题2 的原因 又分为两个 1、主要在于unity package manager这种跟风开源的组件包的策略的天生弊端性。
我们听说过一句话“开源就代表着质量低下”,道理很简单吗,如果开源的代码质量都那么好,干嘛需要商业软件,商业软件存在必定有他的道理。那么unity的 package 开源形式本事就存在着预览版不稳定,然后又加上本身包之间又有依赖关系,如ecs中 enities 又依赖burst ,collection ,job等多个包,本身这些包又是多个小组开发的又都是预览版,怎么保证这么多现编译的代码,再加上本身unity editor又是多版本快速迭代,这些东西加在一起,就变成了一种不可控制的变量了,不出问题都不正常。
2、本身这些包,在预览版不断迭代,api 变更很频繁,如ecs系统 竟然经过了30个版本的迭代(如本文发布的时候竟然是0.0.12-preview30)让人很蛋疼。照成了很多新手学习之后发现 过了一段时间api就变了,或者看的教程就是非最新版本的包,连下载都不能下载环境的搭建不出来,照成学习半途而废。
所以这里给的解决方案有3
1、按照问题1 的解决方法,建立一个相对稳定的版本和开发学习环境,(如学习ecs)在这个稳定环境中 将要学习的插件学习好,先不理会官方最新版本的迭代,我们先将知识的精髓学会
2、当你明白了包的精髓(如ecs学习),明白了他的原理以后呢,我们就可以很轻松的调整package manager 包管理器的mainfast.json配置文件,来选择自己所希望的版本
3、查询官方文档,特别是release 版本变更或者是api升级的文档,修改过时或者被拒绝的api到最新的api,最终跟上unity的快节奏。
是什么在阻止我们学习unity2019?的更多相关文章
- css3常用标签
30个最常用css选择器解析 你也许已经掌握了id.class.后台选择器这些基本的css选择器.但这远远不是css的全部.下面向大家系统的解析css中30个最常用的选择器,包括我们最头痛的浏览器 ...
- 使用C# yield关键字来提高性能和可读性
对于”yield”这个关键字我已经见过N次了,直到最近我才知道这个关键字所蕴含的力量.我将在下面展示出一些使用”yield”让你的代码有更高可读性和更好性能的例子. 为了让你对yield有一些快速概览 ...
- 小白菜初探nodejs
记得大四那年实习的时候出去找工作,就常常听见大家说node.从那以后,悄然埋下了一颗学习nodejs的心.不过由于基础太薄弱,一直没有学习.加之工作上没有相关应用,就一直搁置到现在. 年会的时候,老大 ...
- LA 3485 (积分 辛普森自适应法) Bridge
桥的间隔数为n = ceil(B/D),每段绳子的长度为L / n,相邻两塔之间的距离为 B / n 主要问题还是在于已知抛物线的开口宽度w 和 抛物线的高度h 求抛物线的长度 弧长积分公式为: 设抛 ...
- 30个最常用css选择器解析
转自:http://www.cnblogs.com/yiyuanke/archive/2011/10/22/CSS.html 你也许已经掌握了id.class.后台选择器这些基本的css选择器.但这远 ...
- [转]C#中yield用法
yield 关键字向编译器指示它所在的方法是迭代器块.编译器生成一个类来实现迭代器块中表示的行为.在迭代器块中,yield 关键字与 return 关键字结合使用,向枚举器对象提供值.这是一个返回值, ...
- 一周学会Mootools 1.4中文教程:(1)Dom选择器
利器: 君欲善其事须先利其器,好吧因为我们的时间比较紧迫,只有六天而已,那么六天的时间用死记硬背的方式学会Mt犹如天方夜谭,因此我们需要借鉴一下Editplus的素材栏帮我们记忆就好了,当我们需要用到 ...
- 函数式编程很难,这正是你要学习它的原因 | 外刊IT评论网
函数式编程很难,这正是你要学习它的原因 | 外刊IT评论网 函数式编程很难,这正是你要学习它的原因 156 次分享 新浪微博 腾讯微博 Tweet 人人网 QQ空间 很奇怪不是,很少有人每天都使用函数 ...
- Image Restoration[Deep Image Prior]
0.背景 这篇论文是2017年11月29号第一次提交到arxiv并紧接着30号就提交了V2版本的. 近些年DCNN模型在图像生成和修复上面表现很好,大部分人认为好的原因主要是由于网络基于大量的图片训练 ...
随机推荐
- PHP 根据域名和IP返回不同的内容
遇到一个好玩的事情,访问别人的IP和别人的域名返回的内容竟然不一样.突然觉得很好玩,也很好奇.自己研究了一下下,就简单写一下吧~ 一个IP和一个域名, 先讲一下公网IP没有绑定域名,但是可以通过一个没 ...
- 004_simulink建立子系统
1. 按照<001_创建simulink>文件内容修改 2. 在选中的位置右键,选择create subsystem selection 3. 得到如图所示 4. 双击subsystem进 ...
- Greenplum 如何直连segment节点
Greenplum 展开阅读全文 直连greenplum segment节点的方法, utility模式 : 使用这种方式,不与其他节点通讯,只操作当前节点.也没有数据分布的概念. 如果使用uti ...
- CF843D Dynamic Shortest Path spfa+剪枝
考试的T3,拿暴力+剪枝卡过去了. 没想到 CF 上也能过 ~ code: #include <bits/stdc++.h> #define N 100004 #define LL lon ...
- Python中的各种排序问题
小书匠python排序 本章目录,快速浏览所需内容: 基本的排序 1.列表(list) 1.1按列表元素大小排序 1.2按列表元素的属性 2.字典(dictory) 3.元组(tuple)排序 3.1 ...
- vue中router-link的详细用法
官网文档地址:https://router.vuejs.org/zh/api/#to 今天项目突然有需求,让vue中的一个页面跳转到另一个页面 // 字符串 <router-link to=&q ...
- python下载后出现python 已停止工作
背景: 在执行IDLE或者在terminal窗口执行 python命令时出现如下提示,修改了防火墙关闭也不行,找不到解决办法? 如图: [解决方案] 1.卸载重装python,确保python版本与系 ...
- 常见的可以写入VIM配置文件中的设置参数
常见的可以写入.vimrc文件中的设置参数 设置参数 含义 :set nu :set nonu 设置与取消行号 :syn on :syn off 是否依据语法显示相关的颜色帮助,在VIM修改相关的配置 ...
- T-MAX-凡事预则立
T-MAX-凡事预则立 这个作业属于哪个课程 2019秋福大软件工程实践Z班 这个作业要求在哪里 团队作业第五次-项目冲刺 团队名称 T-MAX 这个作业的目标 1.冲刺的时间计划安排2.答辩问题的回 ...
- 2019 SDN上级第五次作业
1.浏览RYU官网学习RYU控制器的安装和RYU开发入门教程,提交你对于教程代码的理解,包括但不限于: 描述官方教程实现了一个什么样的交换机功能? 答:官方教程实现了一个将接收到的数据包发送到所有端口 ...