Proxy

Заместитель
Сурогат

сделать дополнительные функции через интерфейс взаимодействия

class Program
{
 static void Main
 {
  IHuman Bruce = new Operator();
  IHuman surrogate = new Surrogate(Bruce);
  surrogate.Request();
 }
}
interface IHuman
{
 void Request();
}
class Operator:IHuman
{
 public void Request()
 {
  Console.WriteLine("Operator");
 }
}
class Surrogate:IHuman
{
 IHuman operator;
 public Surrogate(IHuman operator)
 {
  this.operator=operator;
 }
 public void Request()
 {
  this.operator.Request;
 }
}
Рубрики
Unity Функция

Тригонометрические функции

Mathf.Deg2Rad
перевод градусов в радианы float

  • rotation.x=Mathf.Deg2Rad*угол
  • для rotation

Mathf.Rad2Deg
перевод радианы float в градусы

  • угол=Mathf.Rad2Deg*rotation.x
Рубрики
C# Инкапсуляция Класс Наследование ООП полиморфизм

Общий Класс

общий класс создаётся благодаря наследованию
базовый класс класс, который наследуется

Характерные Особенности

присущие множеству связанных элементов

Рубрики
Object Pool Unity Синглтон

Использование пула объектов на примере

BadShooting.cs
не эффиктивность без использования пула объектов

youtube

в каждом Update
инстализируется объект «пуля»
назначается объекту родитель
вызывает метод, который устанавливает начальную позицию и поворот

public class BadShooting:MonoBehaviour;
{
[SerializableField]
private GameObject bullet;

[SerializableField]
private Transform bulletParent;

[SerializableField]
private Vector3 bulletSpawnPosition;

private void Update()
{
var bullet=GetBullet();
bullet.transform.SetParent(bulletParent);

bullet.GetComponent<BadBullet>().OnCreate(bulletSpawnPosition,transform.rotation);
}

private GameObject GetBullet()
{
return Instantiate(bullet);
}

}

BadBullet.cs
пуля летит прямо и через 3 секунды уничтожается

public class BadBullet:MonoBehaviour;
{
private float lifeTime=3;
private float currentLifeTime;
private float speed=10;

public void OnCreate(Vector3 position, Quaternion rotation)
{
transform.position=position;
transfor.rotation=rotation;
currentLifeTime=lifeTime;
}

void Update()
{
transform.Translate(Vector3.forward*Time.deltaTime*speed);

if ((currentLifeTime-=Time.deltaTime)<0)
Destroy(gameObject);
}
}
Рубрики
Blender FBX Scene Unity Анимация Скелет

Настройка Скелета fbx

экспорт в файл fbx из Blender
Рубрики
Mesh Shader ShaderLab Unity vertex Треугольник

Построить Треугольник в шейдере через 3 вершины меша

Геометрический шейдер
[maxvertexcount(3)]
void geo(triangle float4 IN[3]:SV_POSITION, inout TriangleStream<geometryOutput> triStream)
{
код
}
Рубрики
cginc Shader ShaderLab SubShader Unity Модуль

Создание отдельных модулей для шейдерных функций

Путь к папке с хранением модулей
1 вариант. C:\Program
2 вариант. путь, где расположен шейдер

Файл
Name.cginc
Имя файла не должно совпадать с именем функции внутри модуля

Рубрики
Shader ShaderLab SubShader surface Texture Unity

Срез Текстуры

Shader "Custom/World/Cut"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
	_pov("pov", int) = 0
        _pos("Vector",vector) = (0,0,0,0)
    }
    SubShader
    {
    CGPROGRAM
    //surface
    #pragma surface surf Lambert
    //model
    #pragma target 3.0
    //vars
    sampler2D _MainTex;

    int _pov;
    fixed4 _pos;

    struct Input
    {
        float2 uv_MainTex;
        float3 worldPos;
    };

    void surf(Input IN, inout SurfaceOutput o)
    {
        switch (_pov)
        {
        case 0:
            clip(IN.worldPos.z > _pos.z ? 1 : -1);
            break;
        case 1:
            clip(IN.worldPos.x < _pos.x ? 1 : -1);
            break;
        case 2:
            clip(IN.worldPos.z > _pos.z ? 1 : -1);
            break;
        case 3:
            clip(IN.worldPos.x < _pos.x ? 1 : -1);
            break;
        }

        o.Albedo = tex2D(_MainTex, IN.uv_MainTex).rgb;
    }
    ENDCG
}
FallBack "Diffuse"
}

Рубрики
Shader ShaderLab Unity

Структура Шейдера

Shader "Name" 
{ 
[Properties]
CGINCLUDE
ENDCG 
SubShader
{
CGPROGRAM  
Код на языке CG  
ENDCG
} 
[Fallback] 
}
Рубрики
C# Unity

Ошибки