Skip to content

Instantly share code, notes, and snippets.

View xdegtyarev's full-sized avatar
🧊

Alexander Degtyarev xdegtyarev

🧊
View GitHub Profile
Shader "xdegtyarev/InvertedFog"
{
Properties
{
_FogTexture ("Alpha8", 2D) = "white" {}
_FogIntencity("Intencity", Float) = 0.5
}
SubShader
{
@xdegtyarev
xdegtyarev / launch
Created August 5, 2014 13:49
FSM example: launching fsm
public class Robot {
public FSM fsm;
void Start() {
fsm = new FSM( this );
}
void Update() {
fsm.Update();
@xdegtyarev
xdegtyarev / robot
Created August 5, 2014 13:49
FSM example: robot states
public class Charging : State {
public override void Execute( Robot entity ) {
if ( entity.charge == 100f ) {
entity.fsm.ChangeState( SearchHumans.Instance );
} else {
entity.DoCharge();
}
}
@xdegtyarev
xdegtyarev / fsm
Created August 5, 2014 13:47
FSM example: FSM
public class FSM {
public Robot entity;
public State currentState;
public FSM( Robot entity ) {
this.entity = entity;
}
public void Update() {
@xdegtyarev
xdegtyarev / State
Created August 5, 2014 13:47
FSM example: State
public class State {
public virtual void Enter( Robot entity );
public virtual void Execute( Robot entity );
public virtual void Exit( Robot entity );
}
@xdegtyarev
xdegtyarev / robotAI
Created August 5, 2014 12:40
FSM Example 1
enum State {
CHARGING,
SEARCH_HUMANS,
KILL_ALL_HUMANS
}
State myState = State.CHARGING;
float charge = 0f;
void Update() {
@xdegtyarev
xdegtyarev / Fast add child gameObject
Created October 31, 2013 21:31
Tiny Editor script, to create empty game object as a child to currently selected transform.
using UnityEngine;
using UnityEditor;
public class CreateEmptyChild : MonoBehaviour {
[MenuItem("GameObject/Create Empty Child &#n")]
static void EmptyChild(){
GameObject go = new GameObject("Empty");
go.transform.parent = Selection.activeTransform;
go.transform.localPosition = Vector3.zero;
go.transform.localRotation = Quaternion.identity;
Testing Mesh Skinning with different shaders today;
Timings:
Diffuse-Specular
Editor: ~1.5ms
IPOD5: ~2.3ms
Diffuse:
Editor: ~0.2ms-1.5ms
IPOD5: ~2ms
Unlit:
Editor: ~0.2ms-1.5ms
1) private не надо ставить, существует дефолтный модификатор видимости)
2) использу google translate если не уверен как по-английски что-то пишется. или спроси меня. и попробуй http://lingualeo.ru/
3) все типы умеют инициализироваться по умолчанию, не нужно писать Object o = null; Только если ты явно хочешь обнулить значение;
4) если ты не добавляешь какого либо функционала в get'еры/set'еры не испульзуй проперти, оставь поле, и если будет необходимо изменить поведение ебанешь проперти
5) любая конструкция if/else даже если состоит из 1 оператора должна быть написана со скобками if(){}else{} никаких if();else; аналогично для for/foreach
6) правильно название подбирай: UseAbility возвращает bool что вприницпе хуево и непонятно переименуй во что-то что из названия подсказывает что вернет bool например TryUseAbility()
7) (delegate(AbilityBase item) { return item.myType == abilityType; }); в контексте Comparer'oв вместо явных делегатов используй лямбды и анонимные функции читать легче
8) толково растаскивай код,
@xdegtyarev
xdegtyarev / CallJavaCode.cs
Created December 12, 2012 13:39
GettingResolutionStringJNI
using UnityEngine;
using System.Collections;
using System.Runtime.InteropServices;
using System;
public class DisplayManagerJNI : MonoBehaviour {
private IntPtr JavaClass;
private string getResolution;
void Start ()
{