forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Вопросы от новичка (http://forum.boolean.name/showthread.php?t=15809)

seaman 19.02.2013 16:57

Ответ: Вопросы от новичка
 
Цитата:

Кстати, в C# есть библиотеки для работы с ZIP? Только чтобы архивировались\распаковывались в памяти, а не сразу на диск.
Это работает:
DotNetZip
и на мобилах,которые поддерживают .NET Compact Framework - тоже. Работает с потоками, т.е. можно и с памятью.

burovalex 19.02.2013 18:26

Ответ: Вопросы от новичка
 
Помогите пожалуйста, не могу понять как классы создаются и используются..
Мне нужен только маленький пример.
Задача: создать свой класс npc, создать поля Pos, Life. Создать пару npc, и двигать их поочереди, т.е. выбрать первого, передвинуть, поставить в конец списка.

Вот как примерно будет на блитце, для ясности
Type npc
Field Pos#,Life
End Type

for i=1 to 2
npc.npc = New npc
npc\Pos = rnd(10)
npc\Life = 100
next


function UpdateNPC()
npc.npc = First npc
npc\Pos = npc\Pos+0.01
Insert npc.npc After Last npc
end function

RegIon 19.02.2013 19:56

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от Morganolla (Сообщение 253148)
Костян!
Выдает ошибку что то типа не соответствия типов-
error CS0266: Cannot implicitly convert type `UnityEngine.Object' to `UnityEngine.GameObject'. An explicit conversion exists (are you missing a cast?)

ну это если на JS писать, на C# никогда не вылетал


Цитата:

Сообщение от burovalex (Сообщение 253164)
Помогите пожалуйста, не могу понять как классы создаются и используются..
Мне нужен только маленький пример.
Задача: создать свой класс npc, создать поля Pos, Life. Создать пару npc, и двигать их поочереди, т.е. выбрать первого, передвинуть, поставить в конец списка.

Вот как примерно будет на блитце, для ясности
Type npc
Field Pos#,Life
End Type

for i=1 to 2
npc.npc = New npc
npc\Pos = rnd(10)
npc\Life = 100
next


function UpdateNPC()
npc.npc = First npc
npc\Pos = npc\Pos+0.01
Insert npc.npc After Last npc
end function

Для ясности: не нужно одним скриптом управлять всеми ботами.
Пишешь один, и кидаешь на каждого.
PHP код:

public float live=100f;
private 
Transform _transform;

void Start(){
  
_transform this.transform;
  
_transform.position  = new Vector3(Random.Range(-10.0F10.0F), 0Random.Range(-10.0F10.0F));   
}
void Update(){
  
_transform.position+=new Vector3(0.01f,0,0);  


Ну типо так. Не понял что там написано конечно, ну ладно

burovalex 19.02.2013 21:21

Ответ: Вопросы от новичка
 
Не Костян, мне немного другое надо, увидел сейчас у пакса пример, но в какую часть кода её вписывать надо - не понял.

PHP код:

using UnityEngine;
using System.Collections;

//объявляем класс, но если сюда написать - не канает
public static class npc
{
public 
Vector3 position;
public 
float life;
}

public class 
npcScript MonoBehaviour {
//а здесь уже заполнять
public static void npcCreate()
{
public 
npc newNPC=new npc;
npc.position = new Vector3(1,2,3);
npc.life 100f

void Update()
{
npc.life-=0.01f;
}



RegIon 19.02.2013 21:51

Ответ: Вопросы от новичка
 
поправьте меня, так как я :"не компетентен" (MOKA)

нужно же хоть создать объект было.
PHP код:

using UnityEngine;
using System.Collections;

public class 
npcScript MonoBehaviour {

//объявляем класс, но если сюда написать - не канает
public static class npc()
{
    public 
Vector3 position;
    public 
float life;
}

public static 
npc npcCreate()
{
    private 
npc newNPC=new npc();
    
newNPC.position = new Vector3(1,2,3);
    
newNPC.life 100f
   return 
newNPC;
}

private 
nps newNPC;

void Start(){
   
newNPC npcCreate();
}
void Update(){
    
newNPC.life-=0.01f;
}
//



burovalex 19.02.2013 22:42

Ответ: Вопросы от новичка
 
Неа, я же говорю, так не канает..
Нашел еще тему, надо использовать namespace, но у меня ругается на List<>, который я не могу найти в руководстве по Юнити.

вот пример пакса

PHP код:

using UnityEngine;
using System.Collections;

namespace 
test  
{  
    
//Начало класса  
    
public class Worker  
    
{  
        public 
int age 0;  
        public 
string name;  
    }  
    
//Конец класса  


    
class Test  
    
{  
        
// Объявление и инициализация списка
        
public List<Workerworkers = new List<Worker>();

        [
STAThread]  
        static 
void Main(string[] args)  
        {  
            
Worker wrkl = new Worker();  
            
wrkl.age 30;  
            
wrkl.name "Петров Иван Сергеевич";  

            
// Добавление первого элемента списка
            
workers.Add(wrkl);

            
wrkl = new Worker();  
            
wrkl.age 40;  
            
wrkl.name "Иванов Петр Сергеевич";  

            
// Добавление второго элемента списка
            
workers.Add(wrkl);
            
            
// Перебор всех элементов списка
            
foreach(Worker worker in workers)
            {
                 
Console.WriteLine(worker .name " - " worker .age " года"); 
            }

            
// Очистка списка
            
workers.Clear();
        }  
    }  


(18,16): error CS0246: The type or namespace name `List`1' could not be found. Are you missing a using directive or an assembly reference?

т.е. ругается на public List<Worker> workers = new List<Worker>();


И не знаю как справится... :(
Вот если мне с этим помогут, а еще подскажут как брать первый элемент списка и ложить в конец, я вообще буду прыгать от счастья ))

RegIon 19.02.2013 23:44

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от burovalex (Сообщение 253195)
Неа, я же говорю, так не канает..
Нашел еще тему, надо использовать namespace, но у меня ругается на List<>, который я не могу найти в руководстве по Юнити.

вот пример пакса

PHP код:

using UnityEngine;
using System.Collections;

namespace 
test  
{  
    
//Начало класса  
    
public class Worker  
    
{  
        public 
int age 0;  
        public 
string name;  
    }  
    
//Конец класса  


    
class Test  
    
{  
        
// Объявление и инициализация списка
        
public List<Workerworkers = new List<Worker>();

        [
STAThread]  
        static 
void Main(string[] args)  
        {  
            
Worker wrkl = new Worker();  
            
wrkl.age 30;  
            
wrkl.name "Петров Иван Сергеевич";  

            
// Добавление первого элемента списка
            
workers.Add(wrkl);

            
wrkl = new Worker();  
            
wrkl.age 40;  
            
wrkl.name "Иванов Петр Сергеевич";  

            
// Добавление второго элемента списка
            
workers.Add(wrkl);
            
            
// Перебор всех элементов списка
            
foreach(Worker worker in workers)
            {
                 
Console.WriteLine(worker .name " - " worker .age " года"); 
            }

            
// Очистка списка
            
workers.Clear();
        }  
    }  


(18,16): error CS0246: The type or namespace name `List`1' could not be found. Are you missing a using directive or an assembly reference?

т.е. ругается на public List<Worker> workers = new List<Worker>();


И не знаю как справится... :(
Вот если мне с этим помогут, а еще подскажут как брать первый элемент списка и ложить в конец, я вообще буду прыгать от счастья ))

да е ты привязался к списку. забудь про него.! этот код вообще никаким макаром не будет работать.
Пили справку: http://docs.unity3d.com/Documentatio...Behaviour.html
http://shgames.ru

mauNgerS 19.02.2013 23:49

Ответ: Вопросы от новичка
 
burovalex
Замени using System.Collections;
на
using System.Collections.Generic;

Есть ли в юнити простой способ назначить число промежуточных кадров, для смешения анимации?

Вроде блицевского:

Animate entity[,mode][,speed#][,sequence][,transition#]
transition# (не обязательно) - определяет количество промежуточных кадров. По умолчанию 0.

seaman 20.02.2013 00:25

Ответ: Вопросы от новичка
 
Цитата:

Нашел еще тему, надо использовать namespace
Это пример не юнити. Чисто консольная программа
А чем не понравился пример Pax?

seaman 20.02.2013 00:26

Ответ: Вопросы от новичка
 
Цитата:

Есть ли в юнити простой способ назначить число промежуточных кадров, для смешения анимации?
Есть способ указать время смешения
Animation.CrossFade

WISHMASTER35 20.02.2013 01:51

Ответ: Вопросы от новичка
 
seaman, мне не верится, что в net нету библиотек для работы с zip.
Этот DotNetZipLib-DevKit-v1.9 выглядит каким-то сложным. Столько проектов там, не пойму что подключать надо.
А System.IO.Compression разве не для этого?

pax 20.02.2013 09:35

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 253219)
А System.IO.Compression разве не для этого?

Если тебе чисто на C# и ты можешь использовать Net 4+ то да, для этого.

burovalex 20.02.2013 11:21

Ответ: Вопросы от новичка
 
Да не работает так!!
Цитата:

using UnityEngine;
using System.Collections.Generic;

public class TestClass : MonoBehaviour {

//объявляем класс, но если сюда написать - не канает
public static class npc
{
public Vector3 position;
public float life;
}

public static npc Create()
{
npc newNPC = new npc;
newNPC.position = new Vector3(1,2,3);
newNPC.life = 100f;
return newNPC;
}

private nps newNPC;

void Start(){
newNPC = npcCreate();
}
void Update(){
newNPC.life-=0.01f;
}
}
Моно не видит что это новый класс, и компилятор ругается
Assets/Scenes/Scrips/TestsClass.cs(15,11): error CS1525: Unexpected symbol `private'

pax 20.02.2013 11:25

Ответ: Вопросы от новичка
 
ну тут явно не статик
PHP код:

public class npc 

Поясни что ты хочешь сделать, не на примере блица, а на примере того что хочешь получить, тогда подскажу как лучше.

burovalex 20.02.2013 12:25

Ответ: Вопросы от новичка
 
Хорошо пакс!
Смысл такой, я хочу создать свой объект со своими свойствами и методами.

Т.е. такой же объект, или класс (пока не очень разбираюсь как правильно) как GameObject, Camera и т.д.

Т.е. задача - создать свой класс npc, и добавить ему свойства position, life и т.д. Добавить методы Create(), Destroy().

Чтобы в дальнейшем в скрипте можно было обращаться к полям примерно так:
npc newNPC = npc.Create();
newNPC.position = Vector3(1,2,3);
newNPC.life = 100;

void Update()
{
if (newNPC.life<=0) { newNPC.Destroy(); }
}

Буду очень рад, если покажешь маленький наглядный примерчик!

Пакс, я нашел твой пример, это как раз то что мне нужно. Только там парочка непоняток.

Код:

using System; 
using System.Collections.Generic;

namespace test 

    //Начало класса 
    public class Worker 
    { 
        public int age = 0; 
        public string name; 
    } 
    //Конец класса 


    class Test 
    { 
        // Объявление и инициализация списка
        public List<Worker> workers = new List<Worker>();

        [STAThread] 
        static void Main(string[] args) 
        { 
            Worker wrkl = new Worker(); 
            wrkl.age = 30; 
            wrkl.name = "Петров Иван Сергеевич"; 

            // Добавление первого элемента списка
            workers.Add(wrkl);

            wrkl = new Worker(); 
            wrkl.age = 40; 
            wrkl.name = "Иванов Петр Сергеевич"; 

            // Добавление второго элемента списка
            workers.Add(wrkl);
           
            // Перебор всех элементов списка
            foreach(Worker worker in workers)
            {
                Console.WriteLine(worker .name + " - " + worker .age + " года");
            }

            // Очистка списка
            workers.Clear();
        } 
    } 
}


Ругался так: (28,13): error CS0120: An object reference is required to access non-static member `test.Test.workers'
Поправил строку на public static List<Worker> workers = new List<Worker>();
Ошибка пропала, но ругается что имя скрипта не совпадает с внутрескриптовым. (Пробовал и test и Test, всё равно ругается..)
Помоги плиз, как надо обозвать скрипт, и можно в твоём примере добавить MonoBehavior??


Часовой пояс GMT +4, время: 20:48.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Перевод: zCarot