Unity material 冗余数据清理

问题

  • 做如下操作:
    • 创建一个material文件,设置shader和texture。获得此时mat文件的内容。
    • 对这个material换几个不同的shader,并且分别在不同的shader中选中了一些texture后,最终还原为初次的shader和texture。获取此时mat文件的内容。
  • 可以看到,文件中保存了一些过程中用到的shader的变量。例子中就是多了一些纹理和颜色的数据。
  • 为什么原始的mat会多出这么多当前shader中没有的变量呢?这是因为一个material创建之初,默认给了standard这个shader,所以就保留了这个shader中的变量。
  • PS:下面的YAML文件中,第一个是原始的mat文件,第二个是修改后再还原的。

SRP学习笔记

SRP是什么

Unity2018添加了对可编辑渲染管线的支持,让从头搭建渲染管线成为可能,虽然在许多个别的步骤(如剔除 culling)仍然需要依赖Unity。Unity2018还介绍了用这种方法创建的两个渲染管线,轻量级渲染管线(lightweight pipeline)和高清渲染管线(highdefinition pipeline).目前这两个渲染管线仍处于预览状态,可编辑渲染管线的API也被标记为测试技术。但这已经足够让我们用于创建自己的渲染管线了。

  • 简而言之就是可以在unity里面用C#和SRP API写出C++里面用OpenGL类似的效果。
  • 所谓定义渲染管线,就是一系列的OpenGL API的调用过程,数据组织的过程。

MacOS部署Jenkins,打包unity

准备Jenkins

  • 终端输入brew install jenkins,用这个方式安装本质还是个war包,但是不用再安装Tomcat
  • 安装好后直接在终端输入jenkins启动应用,浏览器输入localhost:8080可以打开。
  • 网上有8080端口被占用的处理办法
  • brew安装失败大概率是因为githubusercontent被墙了,要么梯子,要么修改Mac上的hosts,方法如下:
    • sudo vi /etc/hosts
    • https://www.ipaddress.com/查询raw.githubusercontent.com的当前地址
    • 然后在hosts里面加入,当前的IP是199.232.28.133 raw.githubusercontent.com
  • 网页打开后第一次要注册,然后会提示安装插件,最后就可以进入Jenkins。基本上准备工作没啥难度,除了网速。

How I build games with Entitas 摘要

  • 这篇文章并不会讲解entitas的功能,作者在文章中主要谈了谈他如何利用entitas开发清晰、稳定和灵活的代码结构。这篇文章可以说是对于ECS的一种实践的总结,同时也是对于Entitas的使用总结。
  • 文章会介绍如下的话题:
    • 定义:数据、逻辑和视图层
    • 维护它们彼此的独立
    • 通过接口进行抽象
    • IOC
    • 视图层抽象(视图和视图控制器)

Unity ECS:C# Job System文档总结

背景、初衷、目标

  • 出现的背景、初衷就是:天下苦无多线程久已
  • 当然这个说法要进一步的约束,首先unity中可以编写多线程代码,但是最大的问题是多线程中无法使用unity API,当然也无法修改component中的数据了。
  • 目前来看似乎这个技术就是为了能够让开发者使用multithread来操作unity API和component 数据。

优势和劣势

  • 多线程就是优势
  • 可操作的数据类型限制比较大,目前只能是blittable data type
  • 这个多线程是和unity引擎共享work thread,所以变相的侵占了引擎层的性能。

Unity人工智能游戏开发笔记

前言

  • 本着学习一下游戏AI开发的目的看了书,总体来说本书涉及的技术比较浅显,但是胜在面面俱到,很适合没有做过AI开发的同学。
  • 但是本书关于模糊逻辑部分非常坑,令人发指。

开发ECS style项目的思考

概述

  • 这篇文章是近期在学习Entitas时对于ECS的进一步思考
  • 其中会包含在使用ECS时需要注意的一些重要原则
  • 这些原则在使用Entitas时如何实现
  • 这篇文章不会讲Entitas的具体代码和功能,这需要每个使用者自己去看源码和demo。

Unity ECS:基本组件和功能

ECS的组成

Entity:

  • 近似一个轻量级的GameObject对象。
  • 内部没有什么东西,这个和GameObject还不一样,毕竟在GameObject的继承链中具有很多成员和函数。
  • 可以添加和移除组件
  • 具有一个ID,这个是唯一稳定的。这个ID是entity在被保存时的唯一引用。

Unity ECS:C# Job System

Job system

Job system解决了什么问题

  • unity是支持多线程的,虽然有些缺陷。但是我们在代码里面编写大量的线程,即使使用thread pool也无法避免上下文切换的问题。而Job System本质上还是线程(wrok thread),只不过它的工作线程的数量和CPU逻辑上的核数量一致,这样就避免了上下文切换。

Unity ECS:概述

前言

  • 看来unity已经认识到现在编写代码的一些问题了:OO的模型、mono所编译的糟糕的机器码、GC和单线程。emmm
  • ECS的推出就是为了解决上面的问题,同时使用ECS是为了能够利用C# Job System和Burst compiler。job system是支持多线程的(( Ĭ ^ Ĭ ))
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×