Friday, 21 December 2012

OS: Positive operation system

konstantin dvornik
Are you tired of this boring annoying messages: Error! Not found! Incrorrect! Can't install! Try again! 404! Finally BSOD! ?

Jesus Christ, computers nowadays are so complicated. But why ? People have created problem, and solving  them.It's stupid. So let's create positive OS. With sunny shines, smiles, flower, babies. No annoying messages and problems.

Thursday, 20 December 2012

Application idea :: Where to go ?

konstantin dvornik

All we know about maps: GMaps, Apple funny maps, and other local loosy services. Ok you have find the adress of the place that you want to visit, next you should read the map. Boring. Put just an arrow of direction where to go, which synchronized with your GPS location. Thats all simple and easy.

Everyday life idea :: Stuff reminder

konstantin dvornik

Everyone forget something at home: phone, keys, documents, gadgets, money, Xray Laser :)

What if create a special magnite scanner like in supermarket and put codes on a stuff. So if you leave home without needed device you will hear that creepy noise and see the light.

Tuesday, 27 November 2012

Hot girls idea

Girls
Hot:
Long hair
Big eyes
Wet looking. big down lip
Small nose
Sphere looking boobs
Thin hands and legs
Horizontal face
Smile
Darkened eyes
Thin neck
Skirts
White-semi transparent wear

Not hot:
Man-style haircut
Bitch look
Sport wear
Zooming glasses

Sunday, 25 November 2012

Custom online clothing

konstantin dvornik
Imagine web service that give you ability to customize your clothing. You choose color, shape, features  style, material, size and press one button MAKE. Then you pay and wait for delivery. Yeah you may say:  it personal, you should try it before buy...but f**k off, I know what I want, I simply can't find it.

Sunday, 18 November 2012

How to upload video on Youtube

konstantin dvornik

1. Correct file name  ( fv-alpha.mpg, aaa-256 - wrong, Sweet animals, Hot chics with Linux - right )
2. Correct title
3. Correct Category
4. Pay attention on TAGS and description
5. First lines of description should contain a link like My Blog: www.blblablalbl.com
6. Try to upload video from USA, UK and Europe, cuz the biggest auditory will watch it first here
7. Choose the best Thumb from 3
8. Make a video response for related video
9. Post link to the video on cool resource or forum
10. Use social network to make it popular
11. Put nice atmospheric music in video.
12. Don't make people to wait at the begging of the video.

Programming

konstantin dvornik
Global Programming Framework

Every day programmers do same work at same time.
Fortunately frameworks like MS .Net and Apple SDK simplified this task a lot.
But anyway a lot of code is still non reusable. 

Lets imagine that we have one global code storage, with all available code of currently existing programs.

That easy if we try.

We open Our development environmen ( Like VS or XCode ). And we have task like create application that do this and that.
"This and that" can be easy task like read text file or render a cube. But what if customer want 3D editor.
Hmmm that quite a huge task that have a lot of subtasks. Some beginners even don't know from what to start.

Next what we do is INVESTIGATION: we are looking for similar 3d editors, looking for patterns, looking for methods and resources.

But what if we enter just one line in code;

3D editor...then we are waiting...for a while...and have propositions downloaded from Internet like

3DSMax
Maya
Blender

For example we choose 3DSMax and write

3DSMax myMax = new 3DSMax();
myMax.Start();

Cool isn't ?

But customers always want something special like loading 3D Squirell from URL.

We we gonna do next...

We click on 3DSMax class and Choose import 1st level. Now we have access to globals of 3DSMax Like Application start etc.

Next we should load 3d model on start up. We are looking with search browser inside 3DSMax for Load3DModel. Cool we have founded it.
So we import that stuff. And call it after start up.

Sounds easy. So everyone who writing any code write it to global Cloud server. And anyone in the world have access to this code after you release your product.

You can send any your application without any problems and caring about License but of course all propositions will be sorted by popularity.

Everyday life

konstantin dvornik

Let take small tablet like iPad mini and put it on a hand like watches. With such device we can monitor our health like pressure, oxygen and glycose concentration and stuff like stat. We also can always be in skype and not caring about finding our device in a pocket or somewhere else.

Saturday, 10 November 2012

Information idea

konstantin dvornik
Book of the future:
All information packed into a comics tree.

First level: Pictures and text.
Then when you click on a picture you want and see a deeper level.
Pictures and text again. So you can navigate easily throw book.
Very good for references and manuals.
Can be done on iPad via HTML.
All content can be visible like a huge renderable tree.

Wednesday, 7 November 2012

Hot idea

konstantin dvornik

Man:
Hot:
- Short DARK hair cuts
- Beards
- Darkened places under eyes
- Trained body with boxes
- Hairy tors
- Blue eyes
- Long face and nose
- Long hands, fingers
- Tall
- Watches
- Costumes
- Self-sure, clever eyes look
- Dark cloth
- Bad ass
- Symmetry

Not hot:

- Small boots
- Fat ass
- Unfit body
- Zooming glass
- Fat nose
 - Small chin

Saturday, 3 November 2012

Social Idea:

konstantin dvornik
Popular:

 Girls
 Smiles
 Flowers
 Kids
 Easy Success
 Happy Look
 Colors ( rainbows )
 Nature ( grass, sky )
 Health ( Skin, fit look )
 Food
 Stuff that reflect
 Huge things
 Destruction and explosions
 Little insane

Not popular:

 Math
 Sings
 Abstaction
 Depression
 Desease
 Boring

Main idea of popular: Ability to breed. Everything that helps to breed and continue man kind be popular.

Wednesday, 26 September 2012

Coding Idea

Highlight code according to date of writing. For example old code with blue and new with green. So we have gradient by date and easy can navigate through code.

Sunday, 23 September 2012

Game idea


Computer game where you are the tree...and you grow.

Design idea:


Create blind from optical fiber and connect it to switch. So when internet is working you
can see different nice lighting on a blind.

Toy idea:

Tamagochy device based on neural networks. So you'll be ready to real children.

Sunday, 16 September 2012

Education system idea


You start with all the subjects with the same hours.After test the subjects with maximum mark increase in hour and with minimum - decrease.You also can visit classes free, just pass test.

Danil Vitaliy Kate Alexey Antonina - 1

Code snippets:

Вывод текста в консоль:
Debug.Log("Peter");
Debug.Log("sfgfgdfgd");

C#:

Типі переменніх:
int ( -3, 4, 5, 6 ) - целіе
float ( 2.4f, 4.12f, 5.24f, 0.00134234f ) - дробніе
bool ( true, false ) - правда, ложь

Об'явление переменной:
float x;
int y;
bool z;

Присваивание переменной:
x = 10f;
y = 21;
z = false;

Об'явление с присваиванием:
float x = 3f;
float my = 34f;

int a = 10;
int b = 3;

bool hungry=true;

Условие:
bool condition=true;
if(condition)
{
    Debug.Log("V condition pravda");
}
else
{
   Debug.Log("V condition log");
}

if ( 5 > 1 )
{
     Debug.Log("Capitan skazal pravda");
}

if ( 3>100)
{
   Debug.Log("Eto soobshenie nikogda ne vyveditsa");
}

Вложенный if
Вложенный if используеться если проверяеться 2 и более условий. Например если идет дождь и есть зонтик, то взять его с собой.

if ( isRain )
{
    if ( hasUmbrella)
    {
          Debug.Log("Took ubrella");
    }
}

Функция без параметра и ничего не возвращает
void MyFunction()
{
    Debug.Log("I can do a lot of things here");
}

MyFunction - имя функции, фигурные скобки { } - тело функции, void - пустота ( функция ничего не возвращает )

Для того чтобы вызвать ничего не возвращающую функцию необходимо написать ее имя и в скобках указать параметры. Если параметров нет то в скобках пустота.
Візов:
void Start()
{
   MyFunction();
}

Функция c параметром и ничего не возвращает
void MyParameteredFunction(float x)
{
    Debug.Log("Parameter is " + x );
}

float x - параметр функции, float - тип, x - имя. Если параметров несколько, то они пишуться через запятую void MyParameteredFunction(float x, int y, bool z)

При вызове функции с параметром в скобках подставляем конкретные данные или другие переменные.
Візов:
void Start()
{
   MyParameteredFunction(2f);
   MyParameteredFunction(3.1f);
   MyParameteredFunction(10f);
   MyParameteredFunction(-3.5f);
}

Функция с параметром и возвращающая значение
float MyParameterReturnFunction(float x)
{
    return x*x;
}

При вызове функции которая возращает неободимо записать результат в какую-то переменную. Для этого обьявляем переменную и сразу ее присваиваем результату функции.
Візов:
void Start()
{
   float a = MyParameterReturnFunction(2f);
   float b = MyParameterReturnFunction(3f);
   float c = MyParameterReturnFunction(10f);
}

Типичніе ошибки с функциями

ТАК ПИСАТЬ НЕЛЬЗЯ

1.
void Start()
{
    void MyFunction()
     {

     }
}

Нельзя писать функцию внутри функции

2.
void MyFunction( 5f, true )
{
 
}
Нельзя писать в описании функции в аргументах конкретніе значения. Для того чтобі візвать функцию с конкретніми значениями нужно насать ее имя и с скобках узакать парметрі например MyFunction( 5f, true ).



Unity

Проверить нажатие клавиши
if ( Input.GetKeyDown("a")) // a - клавиша на клавиатуре с маленькой букві
{
    Debug.Log("Key A was pressed");
}

Обьявление вектора
Vector3 myVector = new Vector3( 2f, 3f, 4f );

Поставить обьект в определенную точку
Vector3 pos = new Vector3( 0f, 3f, 10f );
this.transform.position = pos;

Сдвинуть обьект
Vector3 dir = new Vector3( 10f, 0f, 0f ); //вправо на 10 метров
this.transform.position += dir;

Записать в переменную нашу текущую позицию и проверить ее
Vector3 pos = this.transform.position;

if ( pos.x > 10f )
{
   Debug.Log("Our current position by X age is bigger then 10 meters");
}

Поиск обьекта по имени
GameObject enemyGo = GameObject.Find("Enemy"); // Enemy єто имя обьекта
Debug.Log( enemyGo ); // если обьект не біл найден, то в enemyGo будет null

Получить координаті найденного обьекта
GameObject enemyGo = GameObject.Find("Enemy"); // Enemy єто имя обьекта
Vector3 enemyPos = enemyGo.transform.position;

Удалить найденній обьект
GameObject enemyGo = GameObject.Find("Enemy"); // Enemy єто имя обьекта
Destroy( enemyGo );

Найти расстояние от текушего до найденного обьекта
GameObject enemyGo = GameObject.Find("Enemy"); // Ищем обьект по имени
Vector3 ourPosition = this.transform.position; // Записіваем в переменную нашу координату
Vector3 enemyPosition = enemyGo.transform.position; // Записіваем координату врага
Vector3 distaceToEnemy = Vector3.Distance( ourPosition, enemyPosition ); // Находим расстояние и записіваем в переменную
Debug.Log( distanceToEnemy );

Получить другой скрипт в текущем обьекте
MySecondScript mss = this.GetComponent<MySecondScript>();
mss.CallSomeFunction();

где MySecondScript - название второго скрипта

Получить другой обьект по имени, получить скприт на нем и вызвать функцию
GameObject otherGo = GameObject.Find("OtherObject");
SomeScript ss = otherGo.GetComponent<SomeScript>();
ss.MyFunction();

где OtherObject - название геймобжекта
SomeScript - название скрипта
ss - название переменной в которой храниться скрипт
MyFunction - название функции которую візіваем

Получить другой обьект по имени, получить скприт и в нем изменить переменную
GameObject otherGo = GameObject.Find("OtherObject");
SomeScript ss = otherGo.GetComponent<SomeScript>();
ss.SomeVariable += 10;

где SomeVariable - название переменной, которую изменяем
ss - название переменной в которой храниться скрипт

Создать обьект и установить в точку
GameObjct clone = GameObject.Instantiate(prototype); //создать обьект
clone.transform.position = new Vector3( 10f, 5f, 0f ); //установить в точку

prototype - заготовка, по которой будет создан обьект ( GameObject )
clone - созданный обьект

Protype может быть один, а клонов может быть много. Например протитип это пуля. Но стреляя очередями будет очень много пуль. Каждая конкретная пуля в такой очереди это клон.

Случайное число
float mr =  Random.Range( -2f, 10,5f );
случайное число от -2 до 10.5

Случайный вектор 3
Vector3 mrv = Random.insideUnitSphere;

случайное вектор с координатами внутри сферы радиусом 1м

Таймер
public class MyScript : Monobehaviour
{
    float mTimer = 0f;

    void Start()
    {
     
    }

    void Update()
    {
        mTimer += Time.deltaTime; // в переменной mTimer прибавляем время в секундах

       if ( mTimer > 4f ) // если прошло 4 секунды
       {
            Debug.Log("3 second have passed"); //написать в консоль текст
            mTimer = 0f; //обнуляем таймер до 0 что начать заново отсчет
       }
    }
}

Переместить обьект в точку при помощи интерполяции Lerp
Vector3 tar = new Vector3( 5f, 10f, 0f ); //точка цели
this.transform.position = Vector3.Lerp( this.transform.position, tar, Time.deltatime );

где
tar - точка цели куда двигаем обьект
Vector3.Lerp( this.transform.position, tar, Time.deltatime ); - интерполяция между 2мя векторами с нелинейной скоростью

Переместить обьект в точку при помощи интерполяции MoveTowards
Vector3 t = new Vector3( 7f, 1f, 0f ); //точка цели
this.transform.position = Vector3.MoveTowards( this.transform.position, t, Time.deltatime );

t - точка цели куда двигаем обьект
Vector3.MoveTowards( this.transform.position, tar, Time.deltatime ); - интерполяция между 2мя векторами с линейной скоростью

Сохранить данніе
int scores = 10;
PlayerPrefs.SetInt( "KeyName", scores );

Загрузить данніе
int scores;
scores = PlayerPrefs.GetInt( "KeyName");

Загрузить данніе если ничего не было сохранено
int scores;
scores = PlayerPrefs.GetInt( "KeyName", -1 );
где -1, то значение, которое вернет функция если такой ключ не был сохранен ранее

Удалить ключ
PlayerPrefs.RemoveKey( "KeyName");

Удалить все ключи
PlayerPrefs.DeleteAll();


Математика:

2х мерніе оси координат:


Поиск направления:


Every day idea


Self-cleaning table. With no dishes, just marked places for food. So you dont need to clean
all that shit. Just put food on the table then after everything push the CLEAN BUTTON, so
table is cleaned automaticaly.

Album design idea:

Blood covered album, with blood of musicians on EVERY disk.

Car idea:

Car with thin rubber body layer, so no scrathes and caring about it

Iliya Ira Roman Alex Denis - 1


Unity Lesson 1 Создание 2D проекта и базововой сцены. Навигация по сцене : https://www.youtube.com/watch?v=68kM_06GNws

Unity Lesson2. Переменные и действия
https://www.youtube.com/watch?v=o0LVdLZtjng

Unity Lesson 3. Виды функций методов или процедур.
https://www.youtube.com/watch?v=HQ62araj9vA

Unity Lesson 4. Условие ( if ). Прыжок игрока
https://www.youtube.com/watch?v=UztP3qQ951Q

Unity Lesson 5. Перемещение игрока по нажатию клавишь.
https://www.youtube.com/watch?v=cR4Nd6SdZfU

Unity Lesson 6. Создание скрипта врага
https://www.youtube.com/watch?v=Hr--bYP0ye4

Unity Lesson 7. Загрузка уровней. Выигрыш / Проигрыш
https://www.youtube.com/watch?v=tFQhHslkpKY

Unity Lesson 8. Подбор обьектов. Отображение очков.
https://www.youtube.com/watch?v=ZHCk5iEn8HQ

Unity Lesson 9. Сохранение данных ( очков )
https://www.youtube.com/watch?v=2lBvV3rPypk

Unity Lesson 10. Cтрельба. Динамическое создание обьектов.
https://www.youtube.com/watch?v=aIRyBW6xjYY

Unity Lesson 11. Префабы. Поворот пули и героя.
https://www.youtube.com/watch?v=qOZIdapCc1E

Unity Lesson 12. Порядок в проекте и сцене.
https://www.youtube.com/watch?v=i0hP6pHqQsw

Unity Lesson 13. Случайные числа.
https://www.youtube.com/watch?v=sNKsUcZF9r0

Unity Lesson 14. Анимация
https://www.youtube.com/watch?v=yXtslEPWXoo

Unity Lesson 15. Система частиц ( Particle System )
https://www.youtube.com/watch?v=8VWv5h_vIhE

Code snippets:

Вівод текста в консоль:
Debug.Log("Peter");
Debug.Log("sfgfgdfgd");

C#:

Типі переменніх:
int ( -3, 4, 5, 6 ) - целіе
float ( 2.4f, 4.12f, 5.24f, 0.00134234f ) - дробніе
bool ( true, false ) - правда, ложь


Об'явление переменной:
float x;
int y;

Присваивание переменной:
x = 10f;
y = 21;

Об'явление с присваиванием:
float x = 3f;
float my = 34f;

int a = 10;
int b = 3;

Описание функции без параметра и ничего не возвращающей:
void MyFunction()
{
      Debug.Log ( "Hello" );
}

Візов функции без параметра и ничего не возвращающей:
MyFunction();

Описание функции c параметром и ничего не возвращающей:
void MyParametredFunction(float inputNumber)
{
      Debug.Log ( inputNumber );
}

Візов функции с параметром и ничего не возвращающей:
MyParametredFunction(3f);

Описание возвращающей функции c параметром:
void MyReturnedParametredFunction(float inputNumber)
{
      return  inputNumber * 10f;
}

Візов функции с параметром и возвращающей значение:
float result;
result = MyReturnedParametredFunction(3f);

Условие
float x = 3f;
if ( x > 10f )
{
    Debug.Log ( "Number bigger then 10 " )
}
else
{
    Debug.Log ("Number less than 10 " );
}

Цикл:
for ( int i=0;i<10;i=i+1 )
{
    Debug.Log( i );
}

Вложенній цикл:
for( int i=0; i< 10;i=i+1 )
{
    for ( int j=0;j<10;j=j+1)
    {
        Debug.Log( i + j );
    }
}

Увеличить переменную на 1:
x++;

Изменить переменную на величину:
x += 42;
x -= 10;
x *= 3;

Обявление масива:
public float[];
int [] k = new int[10];

Unity:
Типі переменніх:
Vector2  a = new Vector2( 2f, 3f ) - 2 точки x,y
Vector3  b = new Vector2( 1f, 5f, 3f ) - 3 точки x,y,z
GameObject a;

Проверить зажатие клавиши
if ( Input.GetButton("Fire1"))
{
      Debug.Log("Pressing fire1");
}

Проверить одиночное нажатие клавиши:
if ( Input.GetButtonDown("Fire1"))
{
      Debug.Log("Pressing fire1");
}

Двигать физический обьект:
Vector2 direction = new Vector2( 1f, 1f, ) //45 градусов вправо и вверх
this.GetComponent<Rigidbody2D>().AddForce ( direction );

Двигать обьект при помощи изменения позиции:
this.transform.position = tris.transform.position + new Vector3 ( -1f,-1f, 0f ); //45 градусов влево, вниз

Найти обьект в сцене:
GameObject objectToFind;
objectToFind = GameObject.Find("InSceneObjectName");

Найти обьект, получить доступ к его скрипту и візвать функцию ( достучаться )
GameObject objectToFind;
objectToFind = GameObject.Find("InSceneObjectName");
ObjectScript scriptVariable= objectToFind.GetComponent<ObjectScript>();
scriptVariable.Do();

Загрузить уровень:
Application.LoadLevel(2); //

Получить текущий уровень:
int currentLevel = Application.loadedLevel;

Загрузить уровень по имени:
Application.LoadLevel("FinalLevel");

Найти расстояние между двумя точками:
Vector2 a = new Vector2( 0f, 10f );
Vector2 b = new Vector2( 10f, 20f );
float distance;
distance = Vector2.Distance( a, b );

Найти расстояние от себя до врага
void Start()
{
     GameObject enemy = GameObject.Find("Enemy");
     Vector3 enemyPosition = enemy.transform.position;
     Vectro3 myPosition = this.transform.position;
     Vector3 distanceToEnemy = Vector3.Distance( myPosition, enemyPosition );
}

Самоуничтожить обьект
Destroy( this.gameObject );

Сохранить число на диск:
PlayerPrefs.SetInt("Scores", 9999 );

Загрузить число с диска:
int loadedScores = PlayerPrefs.GetInt("Scores");

Создание обьекта:
public GameObject prototype;

void Start()
{
     GameObject clone = GameObject.Instantiate( prototype );
     clone.transform.position = new Vector3( 5, 10f, 15f );
}

C перидичностью в 3 секунді вівести текст:
float timer;
void Update()
{
      timer = timer + Time.deltaTime;
       if ( timer > 3f ) //if timer is bigger than 3 second
       {
              Debug.Log("3 second pass");
              timer = 0f;
       }
}

Двигать обьект с одинаковой скоростью в независимости от компьютера:
Vector2 direction = new Vector2( -1f, 1f, ) //45 градусов влево и вверх
this.GetComponent<Rigidbody2D>().AddForce ( direction  * Time.deltaTime );

Получить случаное число:
int randomNumber = Random.Range ( -10, 10 );
Debug.Log ( randomNumber );

Проверить столкновение обьектов:
void OnCollisionEnter2D(Collision2D coll)
{
        if (coll.gameObject.name == "Enemy")
        {
            Debug.Log("We hit enemy" );
        }
 }

Спрятать показать обьект:
this.SetActive( false );
this.SetActive ( true );

Математика:

2х мерніе оси координат:


Поиск направления:





Iliya Ira Roman Alex Denis - 2

Code snippets:

C#:

Описание класса:
public class MyClass
{
    public int myIntVariable;
    public float myFloatVariable;
}

Создание экземпляра класса
MyClass m = new MyClass();

Описание класса с конструктором
public class MyClass
{
    public int myIntVariable

    //констуктор
    public MyClass(int data)
    {
         myIntVariable = data;
    }
}

Создание экземпляра класса c конструктором
MyClass m = new MyClass(10);
Debug.Log( m.myIntVariable );

Наследование:
public class A
{
    public int myIntVariable;
    public float myFloatVariable;

   public void DoSomething()
   {

   }
}

//класс B наследуеться от A
public class B : A
{   
   public void DoMore()
   {

   }
}

B myB = new B();
myB.DoSomething();  //Все что было доступно в А доступно в B поскольку B это наследник A
myB.DoMore();
myB.myIntVariable = 10;

Расширение функции в наследуемом классе:
public class A
{   
   public virtual void DoSomething()
   {
        Debug.Log("A doing stuff");
   }
}

//класс B наследуеться от A
public class B : A
{   
   public override void  DoSomething()
   {
       base.DoSomething(); //вызов функции из родительского класса
       Debug.Log("B added some more"); //добавление функционала
   }
}

B myB = new B();
myB.DoSomething();

Результат:
A doing stuff
B added some more

Статические функции
public class A
{   
   public static float CalculateDescremenant(float a, float b, float c)
   {
       return b*b - 4 * a * c;
   }
}

Вызов статической функции:
float D = A.CalculateDescremenant( 1f, 2f, 3f ); // при вызове статической функции экземпляр класса не нужен
Debug.Log ( D );

Синглтон
Синглтон єто такой класс, которій существует в единсвтенном єкземпляре. Очевидно что класс ВРАГА синглтоном не может біть, посколько обічно в играх больще чем 1 враг. Ccілка на єтот класс храниться в статической переменной, благодаря чему мі можем получать доступ к Синглтону из любой точки кода без Find. Обічно такая переменная назіваеться Instance.

using UnityEngine;
using System.Collections;

public class Singelton: MonoBehaviour
{
     public Singelton Instance;
    
     void Awake() //Awake вызываеться ДО Start
    {
          Instance = this;
     }

    public void DoStuff()
    {
        Debug.Log("Hello from singleton");
    }
}

Доступ к синглтону из другого скрипта
void Start()
{
    Singelton.Instance.DoStuff(); //нет необходимости делать Find и получать скрипт
}

Сообытия
Логика сообытий берет начало из реального мира. Предположим произошло событие - атомный взрыв. Вы узнали о событии и изменили свое поведение - пытаетесь скрыться в бункере. Вопрос в том как реализовать данную логику при помощи C#.

Итак есть некто, кто создает событие и некто, кто подписан на создателя и обрабатывает его событие. Внутри того, кто обрабатывает собітие нужна функция, которя вызывается при наступлении события, так называемій Handler. В C# событие это массив из чужых функций, которые нами вызываеються. Очевидно что такие функции должні біть стандартизировані иначе у них многие параметры будут отличаться и тот кто рассілает сообщения не будет знать какие параметрі передавать. Описание такой функции - єто делегат в с#. Описываеться он вот таким образом
public delegate void GameActionHandler( object who, EventArgs e ),  в who будет храниться кто отослал сообщения, а в e будет храниться данніе єтого сообщения например если атомній взрів произойдет в другом полушарии, то вам нет необходимости скріваться в бункере.

Теперь в том кто рассылает сообщение необходимо обьявить событие

class Hero
{
    public event GameActionHandler OnGameAction;
}

GameActionHandler - делегат, OnGameAction - событие. Все события в С# принято начанать с приставки On.

Как разослать сообщение всем тем, кто на него подписан

class Hero
{
    public event GameActionHandler OnGameAction;

    void Update()
    {
         if ( Input.GetKeyDown("a"))
         {
             if ( OnGameAction != null ) //мы проверели чтобы наш массив не был пуст
             {
                   OnGameAction( this, new EventArgs() ); //здесь с# візівает все функции из массива
              }
         }
    }
}

Итак при нажатии на клавишу герой разошлет всем собітие, a все те кто подписан на него получат уведомление в форме візова функции.

Как подписаться на собітие ?

class Enemy
{
      public Start()
      {
            GameObject.Find("Hero").GetComponent<Hero>().OnGameAction += GameActionHandler;
      }

    public void  GameActionHandler( object sender, EventArgs e )
    {
          Debug.Log("Hero have pressed key A, lets do something according to this information );
     }
}

Итак в тот момент, когда герой нажмет клавишу А он разошлет всем кто на него подписан собітие, на него в Start подписан Enemy, соответственно у Enemy візоветься функция GameActionHandler с соответствующими параметрами.

Конечно же можно обойтись без собітий. При помощи GameObject.Find можно получить обьект, далее достать его скрипт и напрямую візвать функцию как мі делали до єтого. Но данная операция делает ваш код более связаннім и менее переносимім + если в сцене есть несколько врагов, то придеться при помощи Find искать много обьектов, записать их в массив и перебором взять все скрипті и візівать функции, что с точки зрения записи длинее.

Film idea


First time show the doll... pretty big wood doll named Jack. Jack 50's styled, with a special spring-head that moves up-down, so he agree with everything. Time passed Jack met friends, finished school,collage,married,start to work and became a head of big international company. On the background we see different stories where Jack agree with everything. Jack became old and ugly,some bugs eat him oil is bad on him,he has decayed,and now he looks pretty bad. And one day Jack just stooped move the head. He was broken. People around him was so angry and destroy Jack for this.Now we can see Jack on a city dump.