https://blog.csdn.net/poem_qianmo/article/details/106753402
https://www.youtube.com/watch?v=5cjhNjtkpVE
install之后,就可以将代码移动到assets下,以方便在vs工程中进行查看了。
这样vs项目中就可以查看了:
知识点1:参考:https://blog.csdn.net/qq_39097425/article/details/105786757
在脚本中的public并且是可序列化的类,或者是标记为serializedfiled的变量,则可以在脚本的属性面板直接赋值:
举例:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Student : ScriptableObject
{
public string name;
}
使用代码:
using UnityEngine;
public class StudentDemo : MonoBehaviour
{
public Student student;
}
创建一个资源类:
using UnityEditor;
using UnityEngine;
class StudentEditor
{
[MenuItem("Tools/CreateStudent")]
public static void CreateStudent()
{
var asset = ScriptableObject.CreateInstance<Student>();
AssetDatabase.CreateAsset(asset, "Assets/Student.asset");
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
}
}
选中脚本,然后将资源拖拽到序列化的变量上去即可。
此时unity会编译,之后点开StudentDemo.cs.meta文件和Student.asset.meta的文件看看:
你会发现StudentDemo.cs.meta文件的有一个变量引用了一个Student.asset.meta文件。
这样你在gameobject添加StudentDemo的时候,就会有一个默认值了:
我为啥要将这个知识点呢?
因为在看后处理文件:PostProcessLayer的时候,其成员变量:m_Resources
不知何时赋值:
虽然在其Init方法中有赋值:
但是,其调用传入的参数是null,这让我很纳闷了。那这个资源是哪个呢?我将PostProcessingEditor类去除,发现其m_Resources正好指向的是,其默认资源:
虽然你可以创建自己的PostProcessResources,但是由于其meta文件改变了。所以要想自定义资源,则要这里重新赋值:
在这里重新赋值你自定义的资源即可。
知识点2:全屏三角形
static Mesh s_FullscreenTriangle;
public static Mesh fullscreenTriangle
{
get
{
if (s_FullscreenTriangle != null)
return s_FullscreenTriangle;
s_FullscreenTriangle = new Mesh { name = "Fullscreen Triangle" };
// Because we have to support older platforms (GLES2/3, DX9 etc) we can't do all of
// this directly in the vertex shader using vertex ids :(
s_FullscreenTriangle.SetVertices(new List<Vector3>
{
new Vector3(-1f, -1f, 0f),
new Vector3(-1f, 3f, 0f),
new Vector3( 3f, -1f, 0f)
});
s_FullscreenTriangle.SetIndices(new [] { 0, 1, 2 }, MeshTopology.Triangles, 0, false);
s_FullscreenTriangle.UploadMeshData(false);
return s_FullscreenTriangle;
}
}
3、这个标题是怎么绘制