译者的话

偶然找到了这个作者的系列教程, 翻了几个, 觉得非常不错, 为了学习, 也为了像作者一样分享, 搬运至此.

正文开始 :

C# and Shader Tutorials

某愿朝闻道译/原文地址

本系列教程会向你讲授Unity中C#编程及Shader编程的知识. 它们彼此交织, 牵涉出新的编程概念, 数学知识, 算法设计以及Unity特性. 无论你是刚刚开始学习的新手, 还是一个经验老到的资深开发者, 本教程对于你都值得一看.

前言 - 图1
你可以使用Unity做出的效果之一

资助我

是你们的支持让这个系列教程成为可能! 如果你喜欢他们并且还想看到更多教程, 请成为我的自助者, 你可以通过Patreon资助我, 也可以直接向我汇款(译者注 : 避免误会, 额外说明下, 这里资助的是原作者, 不是我)

教程目录

本系列教程有多个章节. 你不需要按部就班的一个个学习, 但是请注意某些教程之间有前后关联, 会共用项目内容.

基础章节将陈述Unity的基本工作原理及C#入门编程知识. 渲染章节涵盖了Shader编程入门教学, 随后会开始高级渲染教程

有些教程制作时间比较早. 你一定会发现这一情况, 因为我已经在教程的最后单独将它们罗列了出来. 其余教程都较为适合当下, 但是最开始都是用Unity 5版本制作的, 我已经开始逐渐去使用升级版本重制它们. 教程中我会标明我使用的版本.

(点击下方各段标题前往对应章节教程目录)

C#与Unity基础

本章节教程对Unity和C#进行入门级的教学

移动控制

本章节介绍如何控制角色物体的移动

对象管理

这一节教程将带领你创建, 跟踪, 保存以及加载你的游戏物体

塔防游戏

制作一个基于网格布局的塔防游戏

流动效果

涵盖了创造流动效果方法的教程, 比如水面

Mesh网格入门

从简单的网格到可发生形变的球体, 向你介绍如何生成Mesh(网格)

自定义SRP(脚本渲染管线)

本章节内容将介绍自定义脚本渲染管线(custom Scriptable Render Pipeline)的方法. 需要使用Unity2019或更高版本

脚本渲染管线

介绍脚本渲染管线(Scriptable Render Pipeline). 需要Unity2018或更高版本

渲染入门

本章节教程会帮助你理解Unity的默认渲染管线 : Mesh网格是如何转变成真正的具有像素图像数据的游戏物体的

渲染进阶

这些教程涵盖了一些复杂的或是专业的渲染技术教学, 远超Unity的标准Shader范畴. 该教程将在渲染入门系列教程制作的项目内容之上进行

六角地图

关于如何制作六角地图的系列教程. 很多策略游戏都会使用这种地图

干扰

生成干扰(Noise)在很多情况下可以发挥作用. 本章节将向你展示如何制作你自己的柏林噪音(Perlin)和简单的干扰, 及它们的衍生内容

Marching Squares算法

一系列关于绘制和重构2D网格(grid)的教程. 为什么不介绍3D的Marching Cubes算法? 因为本算法的基本概念和原理无论2D还是3D都是一样的, 并且2D下该算法内容也足够复杂和值得学习了

做俩游戏

做两个可以真正称之为小游戏的项目

早期教程

该部分教程制作时间较早. 它们是在Unity4环境下制作的, 我没有对它们进行版本升级, 虽然它们仍有其价值, 不过我建议你自己取舍是否要学习它们.

Curves and Splines是个例外, 我会在我升级完C#与Unity基础系列教程后对它进行版本升级

Q&A

有点疑问? 这里有一些常见问题解答, 如果没有你需要的, 你也可以使用多种方式联系我

为什么需要资助?

因为饥寒交迫也是生产力的敌人. 我需要能保障我能有足够时间和精力制作教程的基本物质条件

我选择了Patreon网站是因为我喜欢它们的理念. 你可以成为一名自助者, 你的支持能让我更坚定的持续创作更多教程, 为了你, 也为了所有有需要的人. 这个世界因你的慷慨而愈发美丽!

有没有其他资助途径?

有, 你可以直接向我汇款

我能够得到新教程的通知吗?

我会通过我的如下媒体进行新教程的通知 : Patreon, Twitter, Gab, Facebook, Unity Connect, LinkedIn, reddit

我能不能在商业项目使用你教程的代码?

是的可以, 看看我的授权页面

不过毫无疑问, 从本教程的代码, 到一个可行的商业项目产品, 有一段漫长的距离.

我可以重新分发或翻译你的教程吗?

是的可以, 但需要满足一些限制, 看看我的授权页面

为什么是图文而不是视频教程?

因为这些教程设计大量的代码书写, 那么使用文本就非常合情合理了. 理解代码的过程可能需要你回到已经看过的某处内容, 查找有助你思考的信息, 然后动手实践, 如此往复, 完全可以根据你自己的学习节奏进行.

我认为文本教程是非常适合这种学习过程和方式的, 而视频教程就会增加不便.

尽管视频教程似乎大行其道, 不过我却不希望喜欢文字教程的学习者受到冷落.

为什么你的代码没有使用良好的面向对象设计

本系列教程重点并不是关于如何进行严谨的面向对象编程. 它们的重点是如何在Unity中进行编程来实现一些效果需求.
Unity中的开发工作很大程度上是面向过程而不是面向对象的, Unity的实现基于组件系统. 你使用那些带有特定功能的数据集合展开工作. 这听起来像是面向对象, 但是封装和身份保护完全不是它体系结构的一部分. 强行在Unity中始终恪守面向对象规范是不切实际的. 事实上, Unity正在将焦点转移到使用ECS和DOTS的数据驱动设计上