Archive for the ‘Unity’ Category

Unity3D : Attribute

A muito tempo eu descobri o poder das MetaTag no actionscript e das Annotation no Java
(falei sobre aqui -> https://fabriciodezain.wordpress.com/2013/09/30/as3metatagcustom-javaannotation/)

Agora irei colocar aqui a magica acontecendo no c# / Unity3D.
Não foi muito facil encontrar algo no iniciao, mas com a insistência o google cedeu;P
Basicamente usei como gui esses dois links:
http://www.codeproject.com/Articles/2933/Attributes-in-C
http://www.tutorialspoint.com/csharp/csharp_attributes.htm

No inicio, a coisa mais difícil de entrar na cachola foi saber que  o c# suprimiria a parte ‘Attribute’

Onde:

[AttributeUsage(AttributeTargets.All , AllowMultiple = true)]
public class CustomAttribute : Attribute
{}

Viraria

[Custom] propriedade 

e não

[CustomAttribute] propriedade

O outro pulo do gato é saber como funciona ‘reflection’ no c#…
Não e difícil, mas

'propriedade.SetValue(objeto que tem a propriedade, valor, null)'

ainda parece gambiarra pra mim =/

Então…mão na massa!

Criei uma classe para ser a minha "annotation" (passo1)
using System;
namespace Annotation
{
 [AttributeUsage(AttributeTargets.All , AllowMultiple = true)]
 public class CustomAttribute : Attribute
 {
 public string Name;
 public CustomAttribute(string __name)
 {
 this.Name = __name;
 }
 }
}
Obs.: Não use 'public' na ausência de adultos

Criar uma classe onde usaremos o nosso CustomAttribute  (passo2)
public class MyTestClass
{
 [Annotation.Custom("MyTestClass")]
 public object MySystem { set; get; }
}
Criar o cara responsável pela mágica/macumba(passo3)
using System.Reflection;
using System;
namespace Annotation
{
	public class Properties
	{

		static public void Execute(object __target)
		{
			CustomAttribute customAttribute;

			Type type =  __target.GetType();

			object[] fildList = type.GetProperties();
			foreach(PropertyInfo field in fildList)
			{
				object[] attributeList = field.GetCustomAttributes(true);
				foreach (Attribute attr in attributeList)
				{
					customAttribute = attr as CustomAttribute;
					if(customAttribute == null) { continue ;}
					var a = field;
					field.SetValue(__target,customAttribute.Name,null);
				}
			}
		}
	}
}
E por último .......Fazer o teste \o/(passo4)
using UnityEngine;
using System.Collections;

public class MyBehaviour : MonoBehaviour {

 void Start ()
 {
  MyTestClass TestInstance = new MyTestClass();
  Debug.Log(TestInstance.MySystem);
  Annotation.Properties.Execute(TestInstance);
  Debug.Log(TestInstance.MySystem);
 } 

 void Update () { }
}
Enfim, de fato, não usei a unity pra muita coisa =/ #sorry 
isso porque tem um cara que vai fazer bastante coisa pra gente
e não teremos que ficar reinventando a roda. 
https://github.com/sebas77/Lightweight-IoC-Container-for-Unity3D/blob/master/README.md

[Rapidinha] – Unity -> SWF

[Rapidinha] – Unity -> SWF
[1]
C:\Program Files (x86)\Unity\4_1_2\Editor\Data\PlaybackEngines\flashsupport\BuildTools
Onde a Unity guarda as suas magias.

[2]
C:\Program Files (x86)\Unity\4_1_2\Editor\Data\PlaybackEngines\flashsupport\BuildTools\AS3API\UnityEngine
As principais classes, em ActionScript, usadas pela Unity.
Podem ser “substituidas” diretamente no seu projeto, ou seja,
voce pode criar uma copia e alterar-la como bem quiser, desde que,
essa nova classe fique na sua pasta Asset.

[3]
\Temp\StagingArea\Data\ConvertedDotNetCode\global
Procure esta pasta no seu projeto.
Observe que as classes, antes em c#/?, agora estão nessa pasta, porem, agora…em AS3 =O

UNITY_JSON to publish SWF_AMF (BLAZE) – pt1

EM-> UNITY_JSON to publish SWF_AMF (BLAZE) – pt1
Irei so postar as imagens do processo
e assim que possível eu disponibilizo a api(amf_unityswf_api.swc) e exemplos de uso (Y)

Basicamente, os arquivos que fazem a mágica acontecer, são eles:
amf_unityswf_api.swc -> faz o parse do json e do amf (e outras coisas que escreverei depois)
ShadowApi.swf -> Disponibiliza os métodos para consumo de serviços (via java)
BridgeApi.swf -> Conecta com o servidor

 

unityjson-to-publish-swfamf-blaze_1
 
 
 
 
 
 
unityjson-to-publish-swfamf-blaze_2
 
 
 
 
 
 
unityjson-to-publish-swfamf-blaze_3
 
 
 
 
 
 
unityjson-to-publish-swfamf-blaze_4

[Unity] Logger para swf (Debug.log?)

Logo logo postarei algumas idiossincrasias do build da unity para swf (Flash),
mas no momento disponibilizo so um doce do que estou fazendo (so tentando =/)

Debug_lof_for_swf

Unity -> SWF

espigah_unity 3.5

epigah_unity 3.5

@quickly

aeeee unity 3.5
com um builde para .swf \o/
e não é o isso ~^
temos algumas coisas disponíveis no unity 3.5 que conversão com o ‘flash’,
são elas:

com.unity.IUnityContent (é a interface que representa o conteúdo.)
com.unity.IUnityContentHost (permite a você acessar o conteúdo através desta interface)
com.unity.UnityContentLoader (manipula o start e a conclusão da inicialização)
com.unity.UnityContentParams (parâmetros do carregamento)

essas classe permitem fazer algo assim:

import com.unity.UnityContentLoader;
import com.unity.UnityLoaderParams;

import mx.core.UIComponent;
import mx.events.FlexEvent;

public var loader:UnityContentLoader;

protected function init():void
{
var holder:UIComponent=new UIComponent();

var params:UnityLoaderParams=new UnityLoaderParams
(
false,
systemManager.stage.stageWidth,
systemManager.stage.stageHeight,
true,
true,
true
);

loader=new UnityContentLoader(“Main.swf”, this, params);
holder.addChild(loader);
addElement(holder);
}

bacana, não?
por hoje é só….

%d blogueiros gostam disto: