Доброго времени суток, уважаемые форумчане! Вообщем, началось все с того, что мне понадобилось обратиться к переменной одного скрипта через другой. Все, по сути, просто, но первый скрипт - Js, а второй - С#. Сначала я пытался как-то все-зе обратиться к переменной, но, насколько я понял, так нельзя. Тогда я понял, что надо этот Js скрипт как-то в СиШарп переписать. Нашел в интернете онлайн-конвертер сшитый под Юнити специально: Ссылка
Вот мой код Js скрипта:
Код
#pragma strict /* ----------Indie Effects Base---------- This is the base for all other image effects to occur. this also incorporates motion blur as a built-in feature for those who are impatient to see motion blur on unity free! */
static var renderTexture : Texture2D; private var BlurMat : Material; var motionBlur : boolean; var BlurShader : Shader; var Accumulation : float = 0.65;
static function FullScreenQuad(renderMat : Material){ GL.PushMatrix(); for (var i = 0; i < renderMat.passCount; ++i) { renderMat.SetPass(i); GL.LoadOrtho(); GL.Begin(GL.QUADS); // Quad GL.Color(Color(1,1,1,1)); GL.MultiTexCoord(0,Vector3(0,0,0)); GL.Vertex3(0,0,0); GL.MultiTexCoord(0,Vector3(0,1,0)); GL.Vertex3(0,1,0); GL.MultiTexCoord(0,Vector3(1,1,0)); GL.Vertex3(1,1,0); GL.MultiTexCoord(0,Vector3(1,0,0)); GL.Vertex3(1,0,0); GL.End(); } GL.PopMatrix(); }
function Start () { renderTexture = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false); BlurMat = new Material (BlurShader); }
function Update () { BlurMat.SetTexture("_MainTex",renderTexture); BlurMat.SetFloat("_FrameAccumulation",Accumulation); }
function OnPostRender() { if (motionBlur == true){ BlurMat.SetTexture("_Sample2", renderTexture); FullScreenQuad(BlurMat); } renderTexture.ReadPixels(Rect(0,0,Screen.width,Screen.height), 0, 0); renderTexture.Apply(); }
Вот СиШарповский скрипт, что я получил после конвертации:
Код
// Converted from UnityScript to C# at http://www.M2H.nl/files/js_to_c.php - by Mike Hergaarden // Do test the code! You usually need to change a few small bits.
using UnityEngine; using System.Collections;
public class MYCLASSNAME : MonoBehaviour {
/* ----------Indie Effects Base---------- This is the base for all other image effects to occur. this also incorporates motion blur as a built-in feature for those who are impatient to see motion blur on unity free! */
Labirintik, а ты думаешь, я не догадался это сделать после твоего первого сообщения?
ЦитатаLabirintik ()
FIXME_VAR_TYPE на int заменить
Проблему решил..
Код
private IndieEffects ie; ie = GetComponent<IndieEffects>();// Класс Js скрипта и его короткое имя, к которм я буду обращаться в другом скрипте ie.Accumulation = 0.65f;// Обращение к переменной Js скрипта
Кроме того, надо js скрипт кинуть в папку Standart Assets, ибо файлы, находящиеся в ней, компилируются первыми
Добавлено (30.11.2013, 19:42) --------------------------------------------- Тесу можно закрывать
Сообщение отредактировал lakoris - Суббота, 30 Ноября 2013, 19:04